Angularjs将ng-options与过滤器一起使用,而不从过滤器中删除选项

时间:2013-01-24 17:01:41

标签: javascript angularjs

我正在尝试使用带有过滤器的ng-options,并且可以看到所看到的行为。但是,预期的行为并非所需。

做以下事情时的最佳做法是:

<div ng-init="blades = [{item:'1', spec:'2'}]"></div>
<select 
    ng-model="blades"
    ng-options="blade.spec as blade.spec for blade in blades">
    <option>--</option>
</select>
<ul>
    <li ng-repeat="blade in blades">{{blades.item}}</li>
</ul>

在这里,当您进行过滤时,您可以过滤选择列表中的值,使其无效。什么是最佳做法?

2 个答案:

答案 0 :(得分:5)

我在这个过程中回答了我自己的问题以及其他一些问题。这是如何:

<div ng-init="items = [{id:'1', spec:'A'}, {id:'2', spec:'B']"></div>
<select 
  ng-model="searchSpec"
  ng-options="item.spec as item.spec for item in items">
  <option>--</option>
</select>
<ul>
  <li ng-repeat="item in items | filter:{spec:searchSpec}">{{item.spec}}</li>
</ul>

答案 1 :(得分:0)

Angular有一个内置的方法来做到这一点。 make ng-model =“search.spec”,搜索将始终为{spec:(selectedValue)}。这很好,因为您可以将多个选择下拉列表绑定到搜索对象的不同键。

<div ng-init="items = [{id:'1', spec:'A'}, {id:'2', spec:'B']"></div>
<select 
  ng-model="search.spec"
  ng-options="item.spec as item.spec for item in items">
    <option>--</option>
</select>
<ul>
    <li ng-repeat="item in items | filter:search">{{item.spec}}</li>
</ul>