Я нашел странное поведение с Angularjs. Моя директива просто добавляет и компилирует ng-repeat
в мой элемент dom. Однако переменная области item
недоступна. Посмотрите на код ниже для объяснения.Angularjs: Компиляция ng-repeat динамически
var demo = angular.module('demo', []);
demo.directive('customRepeat', function($compile) {
return {
priority: 2000,
restrict: 'A',
compile: function(element){
element.attr('ng-repeat', 'item in [1,2,3,4,5,6]')
return function(scope, element) {
$compile(element)(scope)
}
}
}
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular.min.js"></script>
<div ng-app='demo'>
<h3>My Items</h3>
<div custom-repeat>
Item: {{item}}
</div>
</div>
Кто имеет некоторые Angularjs навыки выясню?
N.B. Попробуйте запустить его со старой версией Angularjs (скажем, 1.2.x), и вы увидите, что она работает по назначению.
Может быть, я не ясно. Если вы запустите код, вы увидите, что '{{item}}' не получает привязки. Он должен сказать «Item 1», «Item 2» ... и так далее. Это не вызывает никакой ошибки. – Tympanix
Самое странное, как я заметил, добавив пустое выражение '{{}}' после '{{item}}', на самом деле исправляет проблему на мгновение. Это наверняка кажется ошибкой. – Tympanix
@Tympanix проверить мой обновленный ответ с демонстрацией plunker .. надеюсь, что теперь это ясно. –