我通常只用改變的屬性構建一個對象併發送該對象。我在編輯它之前製作原始對象的副本,然後使用它進行比較,但是您可以輕鬆地將其適用於我們$ dirty。沿着這些路線的東西:
function getUpdateObject(orig, current) {
varChanges = {};
for (var prop in orig) {
if (prop.indexOf("$") != 0 && orig[prop] !== current[prop]) {
varChanges[prop] = current[prop];
}
}
return varChanges ;
};
然後我更新的代碼調用此函數來獲取與只是我變化的新的對象,無論分配的主鍵是什麼,我與該對象的工作,併發送至服務器。我不知道你的後端是什麼,但你很可能需要做一個http補丁才能工作。因此,像這樣:
function save() {
var changes = getUpdateObject(vm.orig, vm.current)
changes.id = vm.orig.id
$http.patch("http:/serviceURI.com (" + changes.id + ")", changes).then(...)
}
我把這個代碼的是使用OData的應用程序,並修改了它有點爲這個答案,但所有這些代碼的存在,我用我所有的OData交互的服務。
非常感謝Mike ..它根據你的解釋改變了我的代碼。它的工作.. :) ..謝謝你! – saurav
太棒了!隨時upvote並接受答案。 :) –