将对象传递给ng-click
函数时,该对象似乎失去了引用。 是什么原因?
<div ng-app="app" ng-controller="controller">
<p>
<u>Object</u> : {{ obj | json }}
</p>
<p>
<button ng-click="obj = {}">obj = {}</button> <!-- works -->
<button ng-click="voidIt(obj)">voidIt(obj)</button> <!-- doesn't work -->
</p>
<p>
<button ng-click="reset()">Reset obj</button>
</p>
</div>
angular.module('app', []).controller('controller',
function($scope) {
$scope.voidIt = function(object) {
object = {}
}
$scope.reset = function() {
$scope.obj = { prop: "value" }
}
$scope.reset();
});
答案 0 :(得分:0)
嵌套$scope
引用的内容可能会让人感到困惑,因此使用controllerAs
语法要好得多。有一个很好的解释,read AngularJS 'controllerAs' vs. '$scope'。
The Codepen with ControllerAs referencing
但如果你正在寻找一个明确的理由,为什么它不起作用,我也迷失了。我只是觉得采取更安全的路径来避免这些陷阱更好。