2017-07-05 121 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