2017-07-05 168 views
1

我使用的是角度1.5,我試圖使用一些邏輯來處理數據,我從微軟圖形中獲得完全動態的(鍵和值)並創建一個下拉列表。我使用輸入框來處理它,但似乎無法使用選擇框進行操作。角度使用[ng-if]選擇選項

輸入框的作品

<input type="text" name="{{prop.name}}" ng-model="vm.filterValues[prop.name]"> 
    <div ng-repeat="uniqueValue in vm.schemaExtentionsUniqueValues"> 
     <div ng-if="uniqueValue[0] == prop.internalName || uniqueValue[0] == prop.name"> 
       {{uniqueValue[1]}} 
     </div> 
    </div> 

的選擇框,我試圖建立與sementic的錯誤,不工作:

<select name="{{prop.name}}" ng-model="vm.filterValues[prop.name]"> 
    <span ng-repeat="uniqueValue in vm.schemaExtentionsUniqueValues"> 
      <span ng-if="uniqueValue[0] == prop.internalName || uniqueValue[0] == prop.name"> 
       <option value="{{uniqueValue[1]}}">{{uniqueValue[1]}}</option> 
      </span> 
    </span> 
</select> 

數據 enter image description here

任何幫助將不勝感激。乾杯!

每個數組條目中第一項的值將根據動態屬性進行檢查。

+0

請發佈數據示例或在Fiddler或plunkr中創建演示 –

+0

您不能簡單地[filter:](https://docs.angularjs.org/api/ng/filter/filter)您的ng-repeat列表嗎? – Filburt

+0

是否有可能檢查一個過濾器值不是來自這個數組的另一個屬性? –

回答

0

我建議將大量的邏輯移入控制器。這使模板變得「乾淨」,並將代碼放置在一個更容易訪問的地方。

這基本上意味着過濾/排序schemaExtentionsUniqueValues在它到達要顯示的模板之前。

schemeExtentionsUniqueValues(propName) { 
    // Filter this based on propName passed in; 
} 

第二範圍可投入BTW選項:

<select name="{{prop.name}}" ng-model="vm.filterValues[prop.name]"> 
    <span ng-repeat="uniqueValue in vm.schemaExtentionsUniqueValues(prop.name)"> 
    <option ng-if="uniqueValue[0] == prop.internalName || uniqueValue[0] == prop.name" 
     value="{{uniqueValue[1]}}">{{uniqueValue[1]}}</option> 
    </span> 
</select> 

如果您使用的控制器,以確定裏面是什麼schemaExtentionsUniqueValues那麼你可能不會需要NG-如果選項標籤,並且可以像往常一樣顯示。

+0

我通常會這樣做,但[prop.internalName]的值僅在視圖中的for循環中設置。這與注入html有關,否則我將不得不使用$ sce。 –

+0

我已經稍微修改了它以添加參數,並充實了模式。 – rrd