我正在試圖找到最好的方法來獲取與自定義指令一起使用的ngRepeat中的索引位置。我試圖解決的問題是,對於ngRepeat的每次迭代,我想要知道我在迭代中的位置,以便可以基於該索引位置創建自定義模板。
除非有這樣做的更好的方法,我試圖在此基礎上從文件指令來執行此功能:
&或& ATTR - 提供了一種在上下文中執行一個表達式的父範圍。如果未指定attr名稱,則假定屬性名稱與本地名稱相同。給定範圍的小部件定義:{localFn:'& myAttr'},然後隔離範圍屬性localFn將指向count = count + value表達式的函數包裝。通常希望通過表達式向父範圍傳遞來自獨立範圍的數據,這可以通過將局部變量名稱和值的映射傳遞到表達式包裝函數fn來完成。例如,如果表達式是增量(金額),那麼我們可以通過調用localFn作爲localFn({amount:22})來指定金額值。
http://docs.angularjs.org/guide/directive
我有一些困難,正是這一聲明是告訴我的理解。所以,我試圖做的是...
首先ngRepeat指令沿與我的「testTemplate」指令用於:
<ul>
<li my-attr="test()" my-directive ng-repeat="value in values" class="span2">
</li>
</ul>
接下來,我的指令定義:
angular.module('myModule', [])
.directive('myDirective', function() {
return {
replace : true,
transclude : true,
scope : {
test: '&myAttr'
},
templateUrl: 'partials/myTemplate.html',
link : function(scope, element, attrs) {
alert(scope.count);
}
}
});
現在最後,我試圖在控制器中爲引用指令的父模板定義「test」函數。
function TestTemplateCtrl($scope, testTemplate) {
$scope.test = function() {
alert('in test');
$scope.count = "1";
}
}
所以,第一個問題是,我的「測試」功能在父母根本沒有被執行。也許我不知道如何調用父控制器中的測試函數。現在我實際上並沒有增加,但是如果我能夠得到測試函數來觸發,那麼當我確實達到那一點時,我會如何正確地選擇增加計數?
哇我覺得我讓這個更復雜,然後需要。我可以用scope。$ parent。$ index來獲取鏈接函數中的索引。我仍然想知道爲什麼我的「測試」功能不會觸發,只是爲了將來的參考。 – DavidB