通过ng-click函数传递的对象失去引用

Object passed through ng-click function loses reference

本文关键字:对象 失去 引用 ng-click 函数 通过      更新时间:2023-09-26

将对象传递给ng-click函数时,该对象似乎失去了其引用。原因是什么?

CodePen例子

<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();
});

嵌套的$scope所指的内容可能会令人困惑,因此使用controllerAs语法要好得多。要了解更好的解释,请阅读AngularJS的"控制器"vs。"美元范围"。

codependency with ControllerAs reference .

但是如果你在寻找一个清楚的理由为什么它不起作用,我也迷路了。我只是觉得最好还是走安全的路,避免这样的陷阱。