AngularJS:如何获取ng-options的过滤数组

时间:2014-12-10 14:24:25

标签: javascript angularjs

我有这样的选择:

<select ng-model="myType"
ng-options="type in types | filter:compatibleTypes">

compatibleTypes被控制器定义为$ scope中的函数:

$scope.compatibleTypes = function(item) {
 //Returns true or false
 //depending on another model
}

在控制器中,我需要知道数组'type'的第一个滤波元素(如果有的话)。 或者更确切地说,我必须将模型'myType'的值设置为已更改的筛选列表的第一个元素。

2 个答案:

答案 0 :(得分:1)

将$ filter注入您的控制器

function myCtrl($scope, $filter)
{
}

然后您可以在控制器中使用过滤器,而不必再在HTML中使用它了!

    $scope.filteredTypes = $filter('filter')(types, $scope.compatibleTypes);

在您的HTML中,您可以使用ng-options =“输入filteredTypes” 并在你的控制器

$scope.filteredTypes[0] 

获得第一个!

答案 1 :(得分:1)

filter是一个Angular原生过滤器。这意味着它可以注入许多地方,包括你的控制器:

var myController = ['$scope', 'filterFilter', function ($scope, filterFilter) {
    $scope.compatibleTypes = function(item) {
        //Returns true or false
        //depending on another model
    }
    $scope.filteredResults = filterFilter($scope.types, $scope.compatibleTypes);
}];