javascript - Angular : ng-click only on subset of elements inside a ng-repeat

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

我正在使用 Angular;我有一个 ng-repeat 循环,我想让一些元素可点击。 类似于以下内容:

<div ng-repeat="item in itemList">
    <span ng-class="{ 'interactive' : item.clickable }"
          ng-click="doSomething(item)"> .... </span>
</div>

Controller 中的 doSomething 类似于

$scope.doSomething = function(item) {
    if (!item.clickable) return;
    /* do stuff */
};

这可行,但我担心如果大多数元素不可点击,设置大量无用的处理程序可能会减慢页面速度。是这样吗?如果是这样,有没有办法仅在需要时设置 ng-click 属性,即仅针对那些 item.clickable === true 的元素?

最佳答案

看看这个

<强> Working Demo

脚本

angular.module('main', []);
// Main Controller
function Controller($scope) {
    $scope.itemList = [{
        clickable: true,
        id:1,
        name: "ABC-Name"
    }, {
        clickable: false,
        id:2,
        name: "XYZ-Name"
    }, {
        clickable: true,
        id:3,
        name: "LMN-Name"
    }];

    $scope.doSomething = function(item) {
     console.log(item);
    }
}

html

<div class="container" ng-app="main" ng-controller="Controller">
<div ng-repeat="item in itemList">
    <span ng-class="{ 'interactive' : item.clickable }"
          ng-click="!item.clickable||doSomething(item)">{{item.name}} 
    </span>
</div>
</div>

关于javascript - Angular : ng-click only on subset of elements inside a ng-repeat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23013289/

相关文章:

javascript - k-means聚类算法收敛但不是使用javascript的稳定收敛

javascript - jQuery .是否可以隐藏动态生成的对象(tr)

javascript - 如何在 Angular 中的两个 div 中显示数组的元素?

java - Spring boot CORS 过滤器不适用于 AngularJS

javascript - 使用 ng-repeat (AngularJS) 返回属性列表

javascript - net::ERR_NETWORK_CHANGED 在 Chrome 上的 Https 套接字连接

javascript - 如何在javascript中模拟数组?

javascript - 如何以 Angular 从 $http.json 请求返回转换后的数据?

javascript - angularjs ng-repeat 不循环模态框

angularjs - 带过滤器的AngularJS ng-repeat-NotArray错误