【问题标题】:Remove click event on last item in ng-repeat删除 ng-repeat 中最后一项的点击事件
【发布时间】:2014-08-06 04:57:01
【问题描述】:

我有一个 ng-repeat,如下所示:

<ol>
    <li class="pointer node-name" ng-click="myClick(node)" ng-repeat="node in myArray">{{node.name}}</li>
</ol>

这很棒,给了我一个&lt;ol&gt;&lt;li&gt;myArray 生成的。

但是,我希望ng-repeat 中的最后一项没有ng-click 事件,或者至少禁用它。 例如:

<ol>
     <li class="pointer node-name" ng-click="myClick(node)" ng-repeat="node in myArray">Step 1</li>
     <li class="pointer node-name" ng-click="myClick(node)" ng-repeat="node in myArray">Step 2</li>
     <li class="pointer node-name" ng-click="myClick(node)" ng-repeat="node in myArray">Step 3</li>
     <li class="pointer node-name" ng-click="myClick(node)" ng-repeat="node in myArray">Step 4</li>
     <li class="pointer node-name" ng-repeat="node in myArray">Step 5</li>
    </ol>

这甚至可能吗? 谢谢。

【问题讨论】:

    标签: javascript angularjs angularjs-ng-repeat angularjs-ng-click


    【解决方案1】:

    您可以使用ngRepeat 中的$last-Property 来检查它是否是最后一个元素。然后只需在您的点击处理程序中放置一个条件...

    <li class="pointer node-name" ng-click="myClick(node, $last)" ng-repeat="node in myArray">Step 5</li>
    

    【讨论】:

      【解决方案2】:

      您可以使用 $index 来查看 myArray [0 .. n-1] 中的循环索引。然后当 $index == myArray.length -1 你可以禁用 ng-click。

      【讨论】:

        【解决方案3】:

        禁用它应该很容易。

        <ol>
            <li class="pointer node-name" ng-click="myClick(node)" ng-disabled="$last" ng-repeat="node in myArray">{{node.name}}</li>
        </ol>
        

        或检查索引是否等于数组长度减1(最后一个元素)

        <ol>
            <li class="pointer node-name" ng-click="myClick(node)" ng-disabled="$index === myArray.length - 1" ng-repeat="node in myArray">{{node.name}}</li>
        </ol>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-05-08
          • 2016-11-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多