1

私はこれに何時間も立ち往生しています-誰か助けてくれますか?

ネストされたディレクティブのリストがあり、これを ng-repeat で繰り返しています。これらのディレクティブのテンプレートはかなり分厚いので、それらを個別の HTML ファイルにモジュール化し、templateUrl を介してロードしましたが、これはデータ バインディングを壊しているようです。

ここで問題を再現しました: http://plnkr.co/edit/72HUb0vhtpYWuRHnlq3b?p=preview

HTML:

<div project-ext ng-repeat="project in projects"></div>

project.html

{{project.name}} <button ng-click="projects.splice($index,1)">-</button><br>
<div schedule-ext ng-repeat="schedule in project.schedules"></div>

スケジュール.html

{{schedule.name}}<button ng-click="remove($index)">-</button>

JS:

app.directive('projectExt', function() {
    return { 
        templateUrl: 'project.html'
    };
});

app.directive('scheduleExt', function() {
    return { 
        templateUrl: 'schedule.html',
        link: function(scope) {
            scope.remove = function(i) {
                scope.$parent.project.schedules.splice(i,1)
            };
        }
    };
});

ディレクティブの構成をテンプレートから templateUrl に変更しただけなのに、2 番目のリストで削除ボタンが機能しない理由を誰か教えてもらえますか?

4

2 に答える 2

0

これは既知のバグです。これらのリンクに従ってください。回避策として、作成した他のバージョンを使用できます。

ng-repeat を使用している場合、リスト アイテムの削除時にトランスクルードされた要素が削除されない

https://github.com/angular/angular.js/issues/2151

https://groups.google.com/forum/#!msg/angular/0CP0zpTnZMM/5OzBni7d9sgJ

于 2013-08-14T17:41:01.877 に答える