在我的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"]
。
那是什么样的巫术?
答案 0 :(得分:0)
我仍然不确定我理解你的问题,但我会采取刺。
如果你这样做
$scope.foo = foo;
你没有复制foo并将其分配给$ scope.foo - $ scope.foo现在引用 foo对象。因此,如果您向foo添加项目,您还将向$ scope.foo添加项目,反之亦然。
请注意,这适用于对象,而不是基元(字符串,整数等)。
这是javascript的工作方式 - 它与angularjs本身无关。