如何在控制器中访问“as”数组“'

时间:2016-01-14 10:05:21

标签: angularjs

<md-input ng-model="company_id"></md-input>

<md-input ng-model="user_id"></md-input>

<md-list-item class="md-2-line" ng-repeat="item in all_users | filter :{ 'company_id' : company_id } | filter:{'user_id' : id_State } as filteredarray">
    <md-checkbox ng-model="selected[item.user_id]"></md-checkbox>
    <h3 class="md-body-2" style="color: white;">{{item.user_firstname}}</h3>
    <md-list-item>
app.controller('connectionCtrl', function ($scope) {

   console.log($scope.filteredarray)

})

ng-repeat =“item in items | filter:filterexp as filteredarray”

在控制器中无法访问filteredarray ....

当我在控制台中记录值时,$ scope.filteredarray总是为空。

提前致谢

1 个答案:

答案 0 :(得分:1)

更加不同但更优雅的方法是创建一个自定义过滤器函数,您需要从迭代中传递对象并根据您的实际过滤器将其推送到新数组中。

所以就像这样

<md-list-item class="md-2-line" ng-repeat="item in all_users | filter:customFilterFn">

有像

这样的输入
<md-input ng-model="company_id"></md-input>
<md-input ng-model="user_id"></md-input>

现在在控制器中定义函数

$scope.filteredItems = [];
$scope.customFilterFn = function(item)
{ 
    if(item.companyid === this.company_id && item.userid === this.user_id)
    {
        $scope.filteredItems.push(item);
        return true; // this will be listed in the results
    }    
    return false; // otherwise it won't be within the results
};

现在,filteredItems将包含过滤后的数据。