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

基本上,注入到控制器中的数据始终保持实时更新,但是我需要将页面中加载的第一个数据保存在变量中并且不能更改,但是由于某些原因,它会不断更新。

我的代码:

vm.storedData = null;

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

activate();


难道我做错了什么?

最佳答案

我相信这是由Javascript存储对象的方式引起的。

data是一个对象。 data不存储condition_lines,它存储对condition_lines的引用,因此设置vm.storedData = data.condition_lines;会导致按引用分配。结果,vm.storedData将始终等于data.condition_lines。

您可以使用angular.copy()来有效地按值赋值(它在后台执行了更复杂的操作,但结果相同)。

vm.storedData = angular.copy(data.condition_lines);

10-06 14:28