我有一个控制器,我可以在页面上更新一些数据,但是我的控制器中注入的数据存在某种问题。
基本上,我的控制器中注入的数据总是实时更新,但我需要将页面中加载的第一个数据保存在变量中而不进行更改,但由于某种原因,它会不断更新。
我的代码:
vm.storedData = null;
function activate() {
if(vm.storedData == null){
vm.storedData = data.condition_lines;
}
}
activate();
我做错了吗?
答案 0 :(得分:1)
我认为这是由Javascript存储对象的方式引起的。
data
是一个对象。 vm.storedData = data.condition_lines;
不存储condition_lines,它存储对condition_lines的引用,因此设置vm.storedData = angular.copy(data.condition_lines);
会导致按引用分配。因此,vm.storedData将始终等于data.condition_lines。
您可以使用angular.copy()来有效地按值分配(它会在引擎盖下执行更复杂的操作,但结果是相同的)。
$( "form" ).submit(function( event ) {
event.preventDefault();
(...)
}
答案 1 :(得分:0)
在我看来,你已经在另一个对象上指向了一个引用变量(vm.storedData),所以由于data.condition_lines的值仍在变化,所以storedData也是如此。
如果你将condition_lines的内容复制到storedData,你应该得到你想要的。
你可能想要这个: https://docs.angularjs.org/api/ng/function/angular.copy