[英]angularjs ng-options with custom filter not working
很抱歉再次提出此問題,但未找到任何答案或解決方法。
這是這個問題的后續問題: Stackoverflow
我有一個描述問題的plunker(基本上將樹結構放在下拉列表中):
如圖所示,第一個選擇不選擇值並返回空行 - 這也是一個謎。
我沒有找到任何類似的案例,我接近放棄,所以這是最后一次機會。
關鍵代碼區域是過濾器和initTreeSelect函數:
$scope.initTreeSelect = function(tree){
$scope.filteredFields = $filter('flattenTree')(tree);
return $scope.filteredFields[0];
};
angular.module('myApp.filters', []).filter('flattenTree', function (OrgSvc) {
return function (array) {
var arrayToReturn = [];
arrayToReturn = OrgSvc.flattenTree(array);
return arrayToReturn;
};})
非常感謝您的幫助! 謝謝
Dayan Moreno Leon在他的回答中所寫的內容實際上是正確的。 問題實際上是角度不斷跟蹤模型數據(因為默認情況下,對象/數組通過引用來識別)。
這是被挫敗的,因為你的flattenTree
不斷返回新創建的對象:
flatTree.push({id:tree[i].id, display:tree[i].display, parentId:tree[i].parentId});
但是對於你的具體問題,我認為使用track by
會有所幫助,例如:
<select
class='form-control'
ng-model="treeValue1"
ng-init="treeValue1 = initTreeSelect(fields)"
ng-options="element as element.display for element in fields | flattenTree track by element.id"
></select>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.