Angularjsでいくつかの奇妙な動作が見つかりました。私の指示は単に私のdom要素にng-repeat
を追加してコンパイルします。ただし、スコープ変数item
にはアクセスできません。説明は以下のコードを見てください。これを把握するために、いくつかのAngularjsスキルを持っている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>
?
N.B.古いバージョンのAngularjs(1.2.xなど)でこれを試してみてください。意図したとおりに動作することがわかります。
たぶん私は明確ではありませんでした。コードを実行すると、 '{{item}}'が束縛されていないことがわかります。それは 'Item 1'、' Item 2'などと言わなければなりません。それはどんな種類のエラーもスローしません。 – Tympanix
私が気づいたように、{{item}}の後に空の式 '{{}} 'を追加することで、問題が一瞬修正されます。確かにバグのようだ。 – Tympanix
@Tympanix私の更新された回答をplunkerデモで確認してください..今、その明確な希望を.. –