Angular仅发送更改字段以更新方法

时间:2016-05-09 11:43:35

标签: javascript angularjs

我有一个保存方法。点击SAVE我只想发送更改的字段而不是所有内容因为我的页面上有超过50个字段。因此,每次发送所有字段都非常重要。

require

上面我正在检查字段脏值是true还是false。但如果不更改值,我不希望将值发送为空。还有什么方法呢?

1 个答案:

答案 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交互的服务中。