簡體   English   中英

從過濾器選擇的角度更改默認值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM