AngularJS:ng-repeat,filter和index

时间:2016-04-26 12:22:45

标签: javascript jquery angularjs coffeescript

对不起我的语言技能,希望你能理解所有。

我遇到了ng-repeat和过滤数据的问题。 我使用$ index,从ng-repeat数据中获取一些数据。 例如,我有20个元素。当我点击第三个,然后索引是3,并且应用程序显示关于第三个元素的更多数据。 现在,当我使用过滤器时,它不能很好地工作,因为当我过滤最后一个元素,然后点击它,索引是0并且应用程序显示有关第一个元素的更多数据。 我想要做的是,当我过滤,例如,第15个元素,当我点击它时,我得到更多关于第15个元素的数据,而不是第一个。

HTML:

.panel-body ng-repeat=("restaurant in restaurants | filter:search") ng-click="addRestaurant($index);"
                a aria-expanded="true" data-parent="#accordion" data-toggle="collapse" style="font-size: 18px;" 
                  i.fa.fa-chevron-right.pull-right.text-muted ng-show="$index == index"
                  | {{restaurant.name}}

JS SCRIPT:

$scope.addRestaurant = (index) ->
  $scope.index = index
  $scope.selectedRestaurant = $scope.restaurants[$scope.index].id

1 个答案:

答案 0 :(得分:2)

为什么使用 $ index ?您只能使用迭代项

使用

$scope.addRestaurant = (restaurant)...
...
ng-repeat=("restaurant in restaurants | filter:search") ng-click="addRestaurant(restaurant);"

不是使用$ index

addRestaurant 功能中,您已经点击了餐馆