我有这样的选择:
<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'的值设置为已更改的筛选列表的第一个元素。
答案 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);
}];