Angularjs:当我单击表行时,为什么在ng-if中执行功能?

问题描述 投票:0回答:2

我在https://jsfiddle.net/8t45enfg/2/上有代码源代码非常简单,假设数组list仅具有一个元素HTML代码:

<div ng-controller="myController">
   <table>
      <tr>
        <th>Name</th>
        <th>Age</th>
        <th>Job</th>
      </tr>
      <tr ng-repeat="a in list" ng-click='doClick()'>
        <td ng-if='doCheck()'>{{ a.name }}</td>
        <td>{{ a.age }}</td>
        <td>{{ a.job }}</td>
      </tr>
   </table>
</div>

Js代码

module.controller("myController", function($scope) {
  $scope.list = [ { name: 'test', age: 100, job: 'IT'} ]
  $scope.doClick = function() {
    console.log('doClick');
  }
  $scope.doCheck = function() {
    console.log('doCheck');
    return true;
  }
});

  1. 当我运行代码时,doCheck()被执行两次,为什么?应该执行一次
  2. 主要问题是当我单击数据行时,同时调用了[[doCheck和doClick,我认为它只会调用doClick,而不是doCheck,因为我有对doCheck不执行任何操作。这让我很难理解
angularjs angularjs-ng-click angularjs-ng-if
2个回答
0
投票
我不是该主题的专家,但这是我对您的问题的理解。

0
投票
是由于

Angular的摘要周期

© www.soinside.com 2019 - 2024. All rights reserved.