加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

AngularJS $过滤器在控制器中具有相同属性的条件或条件

发布时间:2020-12-17 17:04:28 所属栏目:安全 来源:网络整理
导读:控制器: var myApp = angular.module('myApp',[]);myApp.controller('myCtrl',['$scope','$filter',function($scope,$filter){ $scope.tickets = [ {title : 'ticket1',assignee : {id:'pratap',name: 'PRATAP'}},{title : 'ticket2',assignee : null},{tit
控制器:

var myApp = angular.module('myApp',[]);

myApp.controller('myCtrl',['$scope','$filter',function($scope,$filter){

    $scope.tickets = [
                      {title : 'ticket1',assignee : {id:'pratap',name: 'PRATAP'}},{title : 'ticket2',assignee : null},{title : 'ticket3',assignee : {id:'ak',name: 'AK'}}
                      ];    

    $scope.defaultOption = 1;
    $scope.options = [
                      {id:1,name : 'MY TICKETS'},{id:2,name : 'OTHERS TICKET'}
                      ];

    $scope.filteredTicket = [];

    $scope.filterData = function(criteria) {
        if (criteria == 1) {
            $scope.filteredTicket = $filter('filter')($scope.tickets,{assignee: {id:'pratap'}});
        } else {
            $scope.filteredTicket = $filter('filter')($scope.tickets,{assignee: null,assignee: {id:'ak'}});
            console.log($scope.filteredTicket);
        }


    };

    $scope.filterData($scope.defaultOption);

}]);

HTML:

<div ng-controller="myCtrl">
<div>Current User: pratap</div>
<div>
    FILTER: <select ng-model="defaultOption" ng-change="filterData(defaultOption)" ng-options="option.id as option.name for option in options"></select>
</div>
    <div>
        <h1>Tickets</h1>
        <ul>
            <li ng-repeat="ticket in filteredTicket">{{ticket.title}}</li>
        </ul>
    </div>  
</div>

我想知道是否可以在$filter中使用相同的对象属性来形成或条件,如下所示

$scope.filteredTicket = $filter('filter')($scope.tickets,assignee: {id:'ak'}});

所以我得到了两个有受让人的对象:null和受让人:’ak’.如果我选择OTHERS TICKETS我需要取消ticket2和ticket3,但截至目前我只得到ticket3.

有人可以帮忙吗?

Created-Plunker-Here

解决方法

您可以在filter的表达式中添加一个函数:

$scope.filteredTicket = $filter('filter')($scope.tickets,function(value){
        return value.assignee === null || value.assignee.id === 'ak';
});

Plunkr

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读