簡體   English   中英

angularjs ng-options,自定義過濾器不起作用

[英]angularjs ng-options with custom filter not working

很抱歉再次提出此問題,但未找到任何答案或解決方法。

這是這個問題的后續問題: Stackoverflow

我有一個描述問題的plunker(基本上將樹結構放在下拉列表中):

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>  

演示: http//plnkr.co/edit/J8PyypC61uzx8PPNV6Zu?p =preview

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM