这是我的代码:
<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 = {}
。
那为什么它不像我期望的那样起作用?我的想法出了什么问题?
答案 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