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

时间:2015-07-08 13:19:38

标签: javascript angularjs angularjs-ng-click

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

CodePen example

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

});

1 个答案:

答案 0 :(得分:0)

嵌套$scope引用的内容可能会让人感到困惑,因此使用controllerAs语法要好得多。有一个很好的解释,read AngularJS 'controllerAs' vs. '$scope'

The Codepen with ControllerAs referencing

但如果你正在寻找一个明确的理由,为什么它不起作用,我也迷失了。我只是觉得采取更安全的路径来避免这些陷阱更好。

相关问题