2 ng-repeats的相同过滤器仅适用于其中一个,AngularJS(?)

时间:2015-01-21 21:41:23

标签: javascript angularjs

我有一个搜索框,我试图过滤2件事,但只有一件正在过滤。

我有这个:

<!--this is the input-->
<input type="search" placeholder="Sports finder" ng-model="query">
<!--this is the filter working-->
<div ng-repeat="sport in sports | filter:query"
     ng-show="sport.leagues.length">
<!--this is the one which is not working-->
<div ng-repeat="league in sport.leagues">

我已经尝试过:

<div ng-repeat="league in sport.leagues | filter:query">
有人说过滤器不能正常工作,因为最后一个过滤器正在返回一个对象而不是一个数组。

这是我提取类型的代码:

AuthFactory.getCustomer().then(function(customer) {
  $scope.customer = customer;
  SportsFactory.getSportsWithLeagues(customer).then(function(sports) {
    $ionicLoading.hide();
    if (sports.length) {
      $scope.sports = sports;
      console.log($scope.sports);
      console.log('on controller js I am an ' + typeof($scope.sports));
    }else {
      AuthFactory.logout();
    }

第一个控制台日志返回:

[Object, Object, Object, Object, Object]

和第二个:

on controller js I am an object

我们打开你在那里看到的那些数据然后,一旦打开就回来了:

>0: Object
>1: Object
>2: Object
>3: Object
>4: Object
>5: Object

现在让我们打开>0: Object返回:

$$hashKey: "object:54"
checked: true
id: 26
> leagues: Array[3]
name: 'Live Betting'
priority: 0
> proto: Object

并且事情就是这样:我的过滤器在第一个[Object, Object, Object, Object, Object]上正常工作,但我还需要让它在那里工作,看看leagues: Array[3]如果我打开它返回:

>0: Object
>1: Object
>2: Object

如果你没有得到,请在截图上看到:

http://storage3.static.itmages.com/i/15/0121/h_1421875540_4177075_1b0b871a32.png

http://storage1.static.itmages.com/i/15/0121/h_1421875594_6426465_3e908c6363.png

实际上非常奇怪,I have a Plunkr here,它正如我所期望的那样正常工作,我使用从网络控制台复制的Json来完成它。

例如:如果您输入国际希腊,您会看到过滤器返回:

International Basketball
GREECE A1

但在我的应用中,如果您输入国际,过滤器会返回上面我需要的内容,如果我只输入希腊,则过滤器不会返回任何内容

更新

看看这个Plunkr,根本不工作,但至少你可以看到我的完整代码: http://plnkr.co/edit/bfU8ynzmsQZk57dYXFUj?p=preview

1 个答案:

答案 0 :(得分:1)

我认为console.log可能会欺骗你。单击控制台中的对象以检查其属性时。它显示了单击它时的属性,而不是打印它时的属性。

试试这个。 console.log(angular.toJson($scope.sports, true));

所以你可以看到那时你到底有什么。