ng-repeatを含むディレクティブがあります。そして、配列項目の変更順に関数をトグルします。スコープモデルを表示しているとき、その項目の順序は変わりますがUIは更新されません。 $ apply()のスコープを試しましたが、そのプロセスはビジー状態です。AngularJsディレクティブビューはng-repeatで更新されません
.directive('example', function() {
return {
restrict: 'E',
transclude: true,
template: `
Checking model: {{model}}
<div ng-repeat="(key, row) in model">
<div ng-hide="key == 0">
<div class="icon-arrow-u" ng-hide="$first" ng-click="moveUp(key)"></div>
<div class="icon-delete" ng-click="removeCell(key)"></div>
<div class="icon-arrow-d" ng-hide="$last" ng-click="moveDown(key)"></div>
</div>
</div>
</div>
`,
scope: {
model: '='
},
link: function(scope, element) {
scope.moveItem = function (origin, destination) {
var temp = scope.model[destination];
scope.model[destination] = scope.model[origin];
scope.model[origin] = temp;
};
scope.moveUp = function(index) {
scope.moveItem(index, index - 1);
}
scope.moveDown = function(index) {
scope.moveItem(index, index + 1);
}
}
}
})
「キーによるトラック」が機能しました。私が "$ index by track"を試したときに変わった原因は何も変わっていません。ありがとうございました! – user256968
これは、オブジェクトを反復処理しているためです。また、 "$ index by track"は、要素のインデックスが変更されない場合にのみ機能します。 – Christoph