这是我的数据
This.dynamicCmb = [{
id: 1,
label: 'aLabel',
subItem: ['aSubItem1','aSubItem2','aSubItem3']
}, {
id: 2,
label: 'bLabel',
subItem: [ 'bSubItem' ]
}];
我想根据我给出的值显示'subItem'数据,即id或label。如果我搜索任何一个它应该显示值。
<input type="text" ng-model="vm.selectedColumn" /> //Textbox to take either id or name value
<input type="button" value="Get" ng-click="GetCmbValue()" /> //On click of button it should load dropdown
<select ng-options="item.name for item in vm.selectedColumn.subItem" ng-model="vm.selected"></select>
.js文件
This.GetCmbValue = function () {
// I should load drop down value here
};
例如:如果我在文本框中输入'1',则应显示'1'的subItem。如果我在文本框中给出'alabel',那么'alabel'的subItem也应该显示。它应该在id或标签上搜索我提供的任何内容。请帮我这样做
答案 0 :(得分:0)
您可以将过滤器附加到ngOption。因此,每次在文本框中键入值时,它都会相应地过滤数据。 我们将文本框的输出绑定到过滤器。
.js文件
app.filter('itemFilter', function() {
return function(input,val) {
var out = new Array();
angular.forEach(input, function(item) {
if (item.id == val || item.label == val) {
out = out.concat(item.subItem);
}
});
return out;
};
});
HTML文件
<input type="text" data-ng-model="val">
<select data-ng-options="item for item in dynamicCmb | itemFilter : val" data-ng-model="selected"></select>
答案 1 :(得分:0)
通过此
更改您的选择代码 <select ng-options="item.name for item in vm.selectedColumn.subItem|filter:{Id:vm.selectedColumn}" ng-model="vm.selected"></select>