AngularJS:混淆$ scope中的对象引用

时间:2016-03-29 16:31:11

标签: angularjs object angularjs-scope

这是我的代码:

<div ng-controller="TestController">
    <h1 ng-click="click()">{{person.name}}</h1>
</div>
<script type="text/javascript">
    var app = angular.module('app', []);
    app.controller('TestController', function ($scope) {
        var p = $scope.person = {
            name: 'Br'
        };

        $scope.click = function () {
            p = {};
        }
    });
</script>

当我点击<h1>时,我重置了p对象,因此我希望h1标记中为空。

因为我认为变量p$scope.person具有相同的引用,它指向同一个对象。

事实上,点击后没有任何变化,只有重置$scope.person = {}

那为什么它不像我期望的那样起作用?我的想法出了什么问题?

1 个答案:

答案 0 :(得分:6)

这与Angular无关,但在JavaScript中如何操纵对象。

当你说p$scope.person都引用内存中的同一个对象时,你就是对的。

但是当您编写p = {}时,您没有触及p所指向的对象,您正在p引用一个新对象,因此它不是$scope.person了。

var a = {};
var b = a;
a === b; // true
b = {};
a === b; // false

如果您想删除name / p的{​​{1}}属性,可以写

$scope.person