重置角度 1.5 视图模型



我有一个相当大的 from,我试图在按钮中重置它,但它没有按预期工作。

请参阅下面的代码

function someCtrl() {
var temp;
var vm = this;
someService.then(function (res) {
vm.data = res;
temp = res;
});
vm.reset = function () {
vm.data = temp; //so that vm will reset to res;
}
}

在这里,我在ng-model中使用vm.data来编辑每个字段。但是当ng-model编辑vm.data时,temp也会自行更新。我猜正在发生一些可变范围参考。因此,当vm.reset被称为vm.data和temp时是相同的,因此重置不会发生。

请建议一种删除此可变范围引用的方法。

在javascript中,对象是通过引用传递的。 因此,在服务回调中,您将相同的响应对象分配给 vm.data 和 temp。这样,在更改 vm.data 时,您也会更改临时温度,因为两者都指向相同的内存位置。

要使其正常工作,请将单独的实例(深度克隆 res 对象)分配给 vm.data 和 temp。喜欢这个:

someService.then(function (res) {
vm.data = angular.copy(res);
temp = res; // no need to deep clone this one. temp can point to the res obj
});

并将重置功能更改为此

vm.reset = function () {
vm.data = angular.copy(temp); // assign "backup" value to vm.data
}

使用angular.copy而不是分配,=表示引用,而angular.copy()创建新对象作为深层副本。

angular.copy(res, temp );

你的代码将是,

someService.then(function (res) {
vm.data = res;
angular.copy(res, temp );
});

相关内容

  • 没有找到相关文章

最新更新