在特殊情况下我真的知道这个过滤器只会返回一次,有没有办法以更好的方式做到这一点?也许还有其他指令?
<div ng-repeat="category in product.categories | filter: { name: userChoice }">
这是Javascript
var myApp = angular.module('myApp',[]);
function MyCtrl($scope) {
$scope.userChoice='computers';
$scope.product=
{
id: 'sku908398939',
categories:[
{
name: 'computers',
val: {
minQty: 10,
maxQty: 100
}
},
{
name: 'hifi',
val: {
minQty: 20,
maxQty: 200
}
}
]
}
}
这是观点:
<div data-ng-controller="MyCtrl" ng-app="myApp">
<select ng-model="userChoice" ng-options="c.name as c.name for c in product.categories">
</select>
<div ng-repeat="category in product.categories | filter: { name: userChoice }">
Min qty for category {{category.name}} is {{category.val.minQty}} units
</div>
</div>
答案 0 :(得分:1)
在这种情况下无需过滤或重复重复。只需使用ng-options功能绑定到对象:
<select ng-model="userChoice" ng-options="c as c.name for c in product.categories">
</select>
现在userChoice
是数组中的一个对象:
Min qty for category {{userChoice.name}} is {{userChoice.val.minQty}} units
选中此fiddle
答案 1 :(得分:0)
看起来您只是想匹配绑定到下拉列表的对象的信息。只需更改绑定到userChoice
对象的方式(绑定整个对象而不仅仅是属性)并显示它。这样你甚至不必自己使用数组。
HTML
<select ng-model="userChoice" ng-options="c as c.name for c in product.categories">
</select>
<div>
Min qty for category {{userChoice.name}} is {{userChoice.val.minQty}} units
</div>
您还可以将此添加到控制器以更好地默认下拉对象。
$scope.userChoice= $scope.product.categories[0];