2

AngularJSng-repeatを使用して、ユーザーのリストをフィルタリングしています。結果の人のリストは変数に渡されますfiltered。表示したいfiltered.length

フィルタは正しく機能し、フィルタを調整すると適切な人が表示されますが、人の数(つまりfiltered.length)が更新されない場合があります。

それはかなり奇妙に思えます:

    <br><br>
    People Selected: {{filtered.length}}<br><br>
    Cost: {{filtered.length*0.01 | currency}}
</div>
<div class="span10">
    <br><br>
    <table class="people">
        <tr ng-repeat="person in (filtered = (data.people | filter:okay))">
            <td>{{person.age}} - {{person.gender}} - {{person.tags}}</td>
        </tr>
    </table>
</div>

ただしfiltered.length、ページの下部にを表示すると、の後にはng-repeat機能するようです。一番上に置くと、80%の時間しか機能しません。

4

2 に答える 2

1

長さ変数を更新できるように、フィルターメソッドをコントローラーに移動できます。

app.controller('MainCtrl', function($scope) {

  var items=[
    {name:'Jim', ok: true},
    {name:'Sue', ok: true},
    {name:'Bob', ok: false},

    ];

    $scope.$watch('filter.value',function(){     
      $scope.items=items.filter(function(item){
         return item[$scope.filter.property]==$scope.filter.value
      })
      $scope.num_items=$scope.items.length;

    });
    $scope.filter={value:true, property: 'ok'}
});

プランカーデモ

于 2013-03-24T17:43:45.540 に答える
0

残念ながら、フィルターを複数回実行する必要がある解決策を見つけました。

    People Selected: {{(data.people | filter:okay).length}}<br><br>
    Cost: {{(data.people | filter:okay).length*0.02|currency}}

私の小さなデータセットでも問題ありませんが、元の質問でバグを確認できるかどうか教えてください。

于 2013-03-24T10:34:57.123 に答える