내 응용 프로그램의 클라이언트 측 빌드를 위해 Knockout.js 및 datajs 라이브러리 (OData 지원 용)와 함께 jQWidgets UI 프레임 워크를 사용하고 있습니다. 그리고 서버 측 ASP.NET 웹 API2의 OData Endpoint. 아래 코드와 같이 jqWidgets Grid 용 ViewModel을 생성했습니다.넉 아웃 observableArray 대 WebApi Odata 서비스
var vm = function() {
this.items = ko.observableArray();
var self = this;
//qet data from service
OData.read(url,
function success(data, response) {
//convert data to observable array
self.items(data.results);
},
function error(err) {
alert(err.message);
});
this.removeItem = function() {
// remove item
var element = "#jqxgrid";
var cell = $(element).jqxGrid('getselectedcell');
if (cell != null && cell != "") {
var selectedrowindex = cell.rowindex;
};
var item =$(element).jqxGrid('getrowdata', selectedrowindex);
OData.request({
requestUri: url + '(' + item.CompanyID + ')',
method: "DELETE",
},
function success(data, response) {
alert('DELETE successfull');
},
function error(err) {
alert(err.message);
});
};
알다시피 항목을 가져 오거나 제거 할 수 있습니다. 내 문제는 모든 변경 사항을 저장하고 변경된 항목을 서버에 보내는 방법입니다. 서버 쪽에서 엔티티를 추가/업데이트하려면 POST/PUT 요청을 적절한 json 객체 (객체 컬렉션 아님)와 함께 보내야합니다. 예를 들어, 변경된 항목을 모두 업데이트하려면 각 항목에 대해 PUT 요청을 수행해야합니다. observableArray의 어느 항목이 추가/변경되었는지 감지하고 각 항목을 서버로 보내려면 어떤 방법이 있습니까 ??
고맙습니다! 나는이 사건에 대해 생각했다. 그리고 이것이 내 문제를 해결하는 가장 적절한 방법 인 것 같습니다. – alinaish