2
我发现Angularjs有一些奇怪的行为。我的指令只是添加和编译ng-repeat
我的DOM元素。但是范围变量item
不可访问。请查看下面的代码以获取解释。Angularjs:编译ng,重复动态
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}}'没有被绑定。它应该说'项目1','项目2' ...等等。它不会抛出任何类型的错误。 – Tympanix
最奇怪的是,正如我刚才注意到的那样,在{{item}}之后添加一个空的表达式{{}}'实际上暂时修复了这个问题。它肯定看起来像一个错误。 – Tympanix
@Tympanix用plunker演示检查我的更新答案..希望现在清楚.. –