0

在我的 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"]

那是什么法术?

4

1 回答 1

0

我仍然不确定我是否理解你的问题,但我要试一试。

如果你这样做

$scope.foo = foo;

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

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

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

于 2013-11-06T00:19:30.710 回答