首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以angularjs显示的条件过滤列表

以angularjs显示的条件过滤列表
EN

Stack Overflow用户
提问于 2015-03-19 17:57:27
回答 1查看 2.2K关注 0票数 0

当我试图筛选一个带有ng重复条件的列表时,我面临一个问题:如果搜索词以#:filter 开始,那么只能通过图书/ else : filter 只按用户名过滤

以下是我的具体问题的代码:

http://codepen.io/prettyGoodPancakes/pen/raoWeB

我的清单如下:

代码语言:javascript
复制
$scope.users = [
{
  username: 'clem',
  books: [
    { value: 'kafka' },
    { value: 'maupassant' }
  ]
},
{
  username: 'sam',
  books: [
    { value: 'Balzac' },
    { value: 'Zola' },
    { value: 'Kafka' }
  ]
}
];

下面是在这个站点上运行的相同代码片段:

代码语言:javascript
复制
angular.module('ionicApp', ['ionic'])

.controller('MyCtrl', function($scope) {
  $scope.users = [{
    username: 'clem',
    books: [{
      value: 'kafka'
    }, {
      value: 'maupassant'
    }]
  }, {
    username: 'sam',
    books: [{
      value: 'Balzac'
    }, {
      value: 'Zola'
    }, {
      value: 'Kafka'
    }]
  }];
  $scope.$watch(function() {
    return $scope.search;
  }, function() {
    if (scope.search.length > 0) {
      if ($rootScope.search[0] === '#') {
        // Filter ONLY by books
      } else {
        // Filter ONLY by username
      }
    }
  }, true);
});
代码语言:javascript
复制
body {
  cursor: url('http://ionicframework.com/img/finger.png'), auto;
}
代码语言:javascript
复制
<html ng-app="ionicApp">

<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
  <title>Ionic List Directive</title>

  <link href="//code.ionicframework.com/nightly/css/ionic.css" rel="stylesheet">
  <script src="//code.ionicframework.com/nightly/js/ionic.bundle.js"></script>
</head>

<body ng-controller="MyCtrl">

  <ion-header-bar class="bar bar-header item-input-inset">
    <label class="item-input-wrapper">
      <i class="icon ion-ios7-search placeholder-icon"></i>
      <input type="search" placeholder="Search" ng-model="search">
    </label>
    <button class="button button-clear">
      Cancel
    </button>
  </ion-header-bar>

  <ion-content>

    <!-- The list directive is great, but be sure to also checkout the collection repeat directive when scrolling through large lists -->

    <ion-list>

      <ion-item ng-repeat="user in users | filter:search" item="item">
        {{user.username}}
        <p><span ng-repeat="game in user.books" style="margin-right:5px">{{game.value}}</span>
        </p>
      </ion-item>

    </ion-list>

  </ion-content>

</body>

</html>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-19 18:03:14

创建一个自定义过滤器

代码语言:javascript
复制
.filter('PrettyGoodPancakeFilter', function () {
  return function(items, filterBy) {
    if (filterBy.indexOf('#') === 0) {
      return items.filter(function (item) {
        return item.username.indexOf(filterBy) > -1;
      });
    } else { 
      // filter by books
    }
  }
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29151786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档