AngularJS,小技巧

时间:2015-01-23 14:08:00

标签: angularjs angularjs-directive angularjs-scope

我有一个问题。当ul有一个ng-repeat时,有没有人知道怎么在控制器中只为ul中的第一个li对象调用函数?

让我们说我的控制器中的功能如下:

var init = function () {
  var a = this;
};

我的ul转发器接缝就像让我们说:

<ul ng-repeat="up in userpartners" ng-click="setSelected(this);">
       <li>
          {{up.id}}
       </li>
</ul>

我想用参数&#39;这个&#39;来调用init函数。这将是第一个&#39; li&#39;项目。只为第一个我想设置的东西。

3 个答案:

答案 0 :(得分:0)

请参阅here检查$ index是否为零或$ first为真。

答案 1 :(得分:0)

你可以这样做:

<ul ng-repeat="up in userpartners" ng-init="init(up, $first);">
       <li>
          {{up}}
       </li>
</ul>

在控制器中:

$scope.init = function (item, isFirst) {
        if (isFirst) {
            alert(item);
        }
    };

Fiddle Example

答案 2 :(得分:0)

但是LI中已经有一个UL

我相信你的意思是:

<ul>
  <li ng-repeat="up in userpartners" ng-init="$first && setSelected(up)">
    {{up.id}}
  </li>
</ul>

<ul ng-init="setSelected(userpartners[0])">
  <li ng-repeat="up in userpartners">
    {{up.id}}
  </li>
</ul>

看到区别?我们想重复孩子,而不是整个名单。

虽然我相信在视图上进行此调用并不是一个好习惯。我把它放在一个控制器里面,就是呼叫本身。