加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – 如何根据其中一个属性的值在控制器中获取ng-repeat

发布时间:2020-12-17 17:20:07 所属栏目:安全 来源:网络整理
导读:我在我的html文件中使用ng-repeat来显示过滤的项目: li ng-repeat="item in (filteredItems = (items | filter:query))" {{ item.name }}/a 在控制器中,我想根据他的一个属性获取项目的索引. 精度:我想在过滤列表中获取索引,而不是在整个列表中. 例如,这将
我在我的html文件中使用ng-repeat来显示过滤的项目:

<li ng-repeat="item in (filteredItems = (items | filter:query))">
  {{ item.name }}
</a>

在控制器中,我想根据他的一个属性获取项目的索引.

精度:我想在过滤列表中获取索引,而不是在整个列表中.

例如,这将是项目名称为some_item_7的索引.

var app = angular.module('myApp',[]);

app.controller('MyCtrl',['$scope',function MyCtrl($scope) {

    $scope.query = 'some';

    $scope.items = 
    [
      { name: 'some_item_1' },{ name: 'another_item_2' },{ name: 'some_item_3' },{ name: 'another_item_4' },{ name: 'some_item_5' },{ name: 'another_item_6' },{ name: 'some_item_7' },{ name: 'another_item_8' },{ name: 'some_item_9' }
    ];

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

    $scope.getIndexFromName = function (name) {
      console.log("trying to get the index of the item with name = " + name);
    }

    $scope.getIndexFromName('some_item_7');

  }
]);

http://plnkr.co/edit/C8gL9qV1MyonTwDENO9L?p=preview

任何的想法 ?

解决方法

ng-repeat表达式在作用域上创建filteredList数组.
< li ng-repeat =“item in(filteredItems =(items | filter:query))”>

您可以像任何数组一样遍历它,检查与name参数匹配的项目.
$scope.filteredItems

这是一个演示:http://plnkr.co/69nnbaZaulgX0odG7g7Y

见这篇相关文章:AngularJS – how to get an ngRepeat filtered result reference

更新
您的注释表明您不想等待ng-repeat来创建过滤项目数组.您可以使用$filter服务在页面加载之前轻松初始化相同的阵列.使用:

$scope.filteredItems = $filter('filter')($scope.items,{name: $scope.query},false)

这样做不会干扰ng-repeat在DOM创建期间将其过滤结果保存到相同的filteredItems数组.

这是更新的(和交互式的)demo:http://plnkr.co/NSvBz1yWvmeFgXITutZF

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读