2

我正在尝试使用带有过滤器的 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>

在这里,当您过滤时,您将值从选择列表中过滤出来,使其无用。最佳做法是什么?

4

2 回答 2

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>
于 2013-01-24T18:22:45.943 回答
0

Angular 有一个内置的方法来做到这一点。使 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>
于 2013-12-03T18:41:37.623 回答