我的页面上有一个项目列表(使用ng-repeat的li元素)和一个下拉菜单(使用ng-options选择元素)。当下拉选项与项目上的特定属性匹配时,我只希望显示那些匹配的项目。
列表项对象如下所示:
var foo = {
someProperty: 'someValue',
someOtherProperty: 'someOtherValue',
items: [{
propertyIWantToMatchOn: 'someImportantValue', /* Note that there will be a lot of items, but they all contain this property */
someDisplayText: 'this can be arbitrary'
}]
};
有时,列表项的propertyIWantToMatchOn
值为someImportantValue
,有时它们的值为someOtherImportantValue
。
我的选择列表如下所示:
var myChoices = [
{name: 'someImportantValue'},
{name: 'someOtherImportantValue'}
];
我的选择下拉列表如下所示:
<select ng-model="mySelectedChoice" ng-options="myChoice.name for myChoice in myChoices"></select>
我的列表项目生成如下:
<ul>
<li ng-repeat="item in foo.items | filter:{propertyIWantToMatchOn: mySelectedChoice}">{{item.someDisplayText}}</li>
</ul>
使用当前过滤器,无论选择何种选项,我的列表中都不会显示任何内容。如果我删除过滤器,则无论选择什么,所有项目都会显示。
如何修改过滤器/我的代码,以便我只能显示其属性与下拉列表中的选项匹配的项目?
干杯!
编辑:如果我在控制器中将mySelectedChoice
硬编码为与我要匹配的属性值匹配的字符串,则列表会正确过滤。所以我想现在我需要弄清楚如何将选择保存为name
的值而不是对象本身。
答案 0 :(得分:2)
答案 1 :(得分:0)
我设法解决了自己的问题。只需要一点点选择!
在我的<li>
标记中,我只需将filter:{propertyIWantToMatchOn: mySelectedChoice}
更改为filter:{propertyIWantToMatchOn: mySelectedChoice.name}
谢谢你们!