2015-08-25 106 views
1

我採用了棱角分明的NG-重複這樣的:角NG-重複指數

<ul> 
    <li ng-repeat="tab in tabs" ng-class="{ active:isSet($index) }" ng-click="setTab($index, tab)">&nbsp;{{tab}}&nbsp;</li> 
</ul> 

但由此產生的HTML是這樣的:

<ul> 
    <li ng-repeat="tab in tabs" ng-class="{ active:isSet($index) }" ng-click="setTab($index, tab)" class="ng-scope ng-binding">&nbsp;First item&nbsp;</li> 
    <li ng-repeat="tab in tabs" ng-class="{ active:isSet($index) }" ng-click="setTab($index, tab)" class="ng-scope ng-binding">&nbsp;Second item&nbsp;</li> 
</ul> 

Wheras我想$指數呈現正確,像這樣:

<ul> 
    <li ng-repeat="tab in tabs" ng-class="{ active:isSet(0) }" ng-click="setTab(0, tab)" class="ng-scope ng-binding">&nbsp;First item&nbsp;</li> 
    <li ng-repeat="tab in tabs" ng-class="{ active:isSet(1) }" ng-click="setTab(1, tab)" class="ng-scope ng-binding">&nbsp;Second item&nbsp;</li> 
</ul> 

我在做什麼錯?

+0

  {{tab}}   –

+0

忘記使用'track由'ng-repeat =「項目在數組軌道由$ index」 – Vinny

+0

你不會在視圖中查看'$ index'的值...爲什麼你認爲你需要最後一個顯示?問題是什麼造成的? – charlietfl

回答

3

查看演示:JSFiddle

雖然$index值不評估並在所述元件示出,實際上該值被傳遞到正確的功能:

angular.module("Joy", []) 
.controller("JoyCtrl", ['$scope', function ($scope) { 
    $scope.isSet = function (index) { 
     console.log(index); 
     return index % 2 === 0; 
    }; 
}]); 

HTML:

<div ng-app="Joy" ng-controller="JoyCtrl"> 
    <div ng-repeat="i in [1,2,3]" ng-class="{'active': isSet($index)}">{{i}}</div> 
</div> 
+0

非常正確!儘管HTML索引中沒有美元索引,但無論如何,這一切似乎都在起作用 - 函數被調用的正確參數 - 來自Angular的奇怪微妙的行爲! – NickJ

+1

@NickJ根本就不奇怪..' $ index'是一個變量 – charlietfl

+0

作爲一名Java開發人員,任何Javascript都會讓我可憐的小腦子在終端混亂中流出我的耳朵: – NickJ