我正在使用jQWidgets UI框架與Knockout.js和datajs庫(用於支持OData)構建我的應用程序的客戶端。以及服務器端的ASP.NET Web API2中的OData端點。我創建視圖模型爲jqWidgets電網如下代碼:Knockout observableArray vs 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);
});
};
正如你看到的,我可以得到和刪除項目。 我的問題是如何保存所有更改併發送更改的項目到服務器。對於服務器端的添加/更新實體,我必須向適當的json對象(而不是對象集合)發送POST/PUT請求。所以,例如,如果我想更新所有更改的項目,我必須爲每個項目執行PUT請求。 是否有任何方法來檢測observableArray中的哪些項目被添加/更改並將每個項目發送到服務器?
謝謝!我想過這個案子。而且這似乎是解決我的問題最合適的方法。 – alinaish