[英]Angular change default value of select from filter
我有一個選擇框,其中裝有來自控制器的一些數據。 當輸入值更改時,應過濾選擇框的內容,並應基於數據對象的is default屬性分配默認值。
有什么方法可以使用角度指令來完成,還是需要作為自定義過濾器功能來完成,
angular.forEach(vm.data,function(item){
if (vm.q == item.someId && item.isDefault) {
vm.result = item.value;
}
});
我的HTML看起來像
<div ng-app="myApp" ng-controller="ctrl as vm">
<input type="text" ng-model="vm.q">
<select ng-options="item.value as item.description for item in vm.data | filter:{someId:vm.q}" ng-model="vm.result"></select>
</div>
和我的控制器看起來像:
(function(){
angular.module('myApp',[]);
angular
.module('myApp')
.controller('ctrl',ctrl);
function ctrl()
{
var vm = this;
vm.data = [
{
someId: '1',
description: 'test1',
value: 100,
isDefault: true
},
{
someId: '2',
description: 'test2',
value: 200,
isDefault: false
},
{
someId: '3',
description: 'test3',
value: 100,
isDefault: true
},
];
}
})();
在此處查看我的plunkr演示: http ://plnkr.co/edit/RDhQWQcHFMQJvwOyHI4r?p=preview
所需的行為:1)在文本框中輸入1 2)列表應過濾為2個項目3)選擇框應基於屬性isDefault預先選擇項目1默認設置為true
提前致謝
我建議您在項目中包含一些第三方庫,例如lodash ,以使處理數組/集合變得更加容易。
之后,您可以為input
添加ng-change
指令。
<input type="text" ng-model="vm.q" ng-change="vm.onChange(vm.q)">
以及控制器中的實際onChange
函數
vm.onChange = function(id) {
var item = _.findWhere(vm.data, { someId: id, isDefault: true });
vm.result = item ? item.value : null;
};
那里有它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.