我有一個對象數組,每個對象可以有稍微不同的數據。我使用ng-repeat選擇要顯示的正確指令的指令。該「顯示」指令採用該對象並以正確的格式顯示數據。這一切都很好。如何在對數組進行更改時重新繪製 - 重複?
現在我需要重新組織數組的順序。當我更新數組時,「顯示」指令不會重新排序,只有數據發生變化。例如,大多數數據集都有一個「標題」字段,所以這些更新,但「顯示」沒有。
我該如何最好地刷新ng-repeat,以便它能正確地重新排列「顯示」指令?
我可以發佈代碼,但我覺得這更像是一個概念性問題。
HTML:
<module-builder module="{{$index}}" ng-repeat="module in build.modules track by $index"></module-builder>
模塊建設者:
(function() {
'use strict';
angular
.module('app.email_editor')
.directive('moduleBuilder', moduleBuilder);
function moduleBuilder ($compile) {
var directive = {
link: link,
restrict: 'EA'
};
return directive;
function link(scope, element, attrs) {
var module = scope.build.modules[attrs.module];
var template = '';
switch (module.Name){
case 'moduleTypeOne':
template = "<module-type-one class='{{module.Class}}'></module-type-one>";
break;
case 'moduleTypeTwo':
template = "<module-type-two class='{{module.Class}}'></module-type-two>";
break;
default:
break;
}
element.html(template);
$compile(element.contents())(scope);
}
}
})();
BTW html5Sotable是重新排序
你能提供一些示例代碼嗎? [documentation](https://docs.angularjs.org/api/ng/directive/ngRepeat)表示:「當項目重新排序時,它們各自的模板在DOM中被重新排序。」也許你還需要使用'track by'在表達中? –
由於角度的雙向綁定性質,這實際上是一個實現問題而不是概念問題。內置的過濾器用於管理完美工作的對象的順序,但角度文檔中提到「您需要了解JavaScript規範沒有定義爲某個對象返回的鍵的順序。」目前尚不清楚您是否重新排列數組中的對象,或者只是重新排序對象的鍵。 – Claies
在第二段中提到,模板不重新排序,只有數據有效。我將準備代碼。 –