Я пытаюсь найти лучший способ получить позицию индекса в ngRepeat, используемую с пользовательской директивой. Проблема, которую я пытаюсь решить, заключается в том, что для каждой итерации ngRepeat мне бы хотелось узнать, где я нахожусь на итерации, поэтому я могу создать собственный шаблон на основе этой позиции индекса.
Если нет лучшего способа сделать это, я пытаюсь сделать эту функциональность на основе этой документации из директив:
& или & attr - обеспечивает способ выполнения выражения в контексте родительской области. Если имя attr не указано, предполагается, что имя атрибута совпадает с локальным именем. Определенное и видимое определение области: {localFn: '& myAttr'}, затем изолировать свойство scope 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";
}
}
Итак, первая проблема заключается в том, что моя "тестовая" функция в родительском объекте вообще не выполняется. Возможно, я не понимаю, как следует вызывать тестовую функцию в родительском контроллере. Теперь я еще не увеличился, но вернее ли это, если я смогу запустить тестовую функцию, чтобы увеличить огонь,