Angular赋值“双向”,bug?

时间:2013-11-05 23:35:12

标签: angularjs angularjs-scope

在我的html头中,我有一个数组。这是因为我使用Django模板渲染它并且很方便。

<script type="text/javascript"> foo = ["Python", "Marketing", "Start-ups", "business"]
</script>

在我的directive.js中,我有一个指令代码:

$scope.foo = foo; // so it takes the data and the global value from the template
$scope.foo.push('wrong'); // let's add a value

$scope.reset = function(){
    $scope.foo = foo; // rebind with the global value
    console.log(foo)
}

当我记录foo时,我得到["Python", "Marketing", "Start-ups", "business", "wrong"]

现在我尝试了省略$scope.foo = foo;的相同代码。当我使用reset()时,数组是正确的数组["Python", "Marketing", "Start-ups", "business"]

那是什么样的巫术?

1 个答案:

答案 0 :(得分:0)

我仍然不确定我理解你的问题,但我会采取刺。

如果你这样做

$scope.foo = foo;

你没有复制foo并将其分配给$ scope.foo - $ scope.foo现在引用 foo对象。因此,如果您向foo添加项目,您还将向$ scope.foo添加项目,反之亦然。

请注意,这适用于对象,而不是基元(字符串,整数等)。

这是javascript的工作方式 - 它与angularjs本身无关。