AngularJS,小技巧

AngularJS , small trick

我有一个问题。当 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>

我想用参数 'this' 调用 init 函数,这将是第一个 'li' 项。只有第一个li我想设置一些东西。

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

你可以这样做:

<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

但是您的 UL 中已经有一个 LI

我相信你的意思是:

<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>

看出区别了吗?我们要重复子项,而不是整个列表。

虽然我认为在视图上进行此调用不是一个好的做法。我会把它放在一个控制器中,即调用本身。