数据仅存储在变量上一次/第一次

时间:2016-06-20 19:18:07

标签: javascript angularjs

我有一个控制器,我可以在页面上更新一些数据,但是我的控制器中注入的数据存在某种问题。

基本上,我的控制器中注入的数据总是实时更新,但我需要将页面中加载的第一个数据保存在变量中而不进行更改,但由于某种原因,它会不断更新。

我的代码:

vm.storedData = null;

function activate() { 
    if(vm.storedData == null){
        vm.storedData = data.condition_lines;
    }
}

activate();

我做错了吗?

2 个答案:

答案 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