2016-04-26 46 views
-1

對不起,我的語言能力,希望你明白一切。AngularJS:ng-repeat,過濾器和索引

我有一個ng-repeat和過濾器數據的問題。 Im使用$ 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腳本:

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

爲什麼不只需發送resta urant對象的函數'ng-click =「addRestaurant(餐廳)'然後使用它? – war1oc

+0

定義的搜索過濾器在哪裏?爲什麼您在列表和詳細信息視圖中使用相同的元素?這是什麼HTML(模板?)語法? – Markus

+0

@ war1oc謝謝,現在我發送餐廳對象。我讓功能發生了變化,現在工作得很好! –

回答

2

你爲什麼要使用$指數?你可以只使用迭代項目

使用

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

不與addRestaurant功能

$指數你已經有點擊餐廳