我有一个保存方法。点击SAVE我只想发送更改的字段而不是所有内容因为我的页面上有超过50个字段。因此,每次发送所有字段都非常重要。
require
上面我正在检查字段脏值是true还是false。但如果不更改值,我不希望将值发送为空。还有什么方法呢?
答案 0 :(得分:2)
我通常只使用更改的属性构建一个对象并发送该对象。我在编辑它之前制作原始对象的副本,然后使用它进行比较,但是你可以轻松地将它改编为我们$ dirty。这些方面的东西:
function getUpdateObject(orig, current) {
var changes = {};
for (var prop in orig) {
if (prop.indexOf("$") != 0 && orig[prop] !== current[prop]) {
changes[prop] = current[prop];
}
}
return changes ;
};
然后我的更新代码调用此函数来获取只有我的更改的新对象,将主键从我正在使用的内容分配给该对象并将其发送到服务器。我不知道你的后端是什么,但你很可能需要做一个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交互的服务中。