角度文本输入过滤器初始化,没有结果

时间:2014-03-11 14:25:33

标签: javascript angularjs

我有一个基本的角度应用程序,可以从本地json文件中对种类列表进行排序和过滤。当应用程序初始化时,没有返回任何物种。当您开始输入时,会返回一些物种,如果您删除了搜索字词,则会返回所有物种。

我想在应用初始化时返回所有物种。

http://plnkr.co/edit/0DOwSvtaepSfFWKR8UGS?p=info

2 个答案:

答案 0 :(得分:1)

您是否尝试过filterData设置为get?

返回的数据

Example

答案 1 :(得分:1)

我认为使用内联符号来过滤更简洁,这可以避免这个问题:

<div ng-repeat="animal in species | filter:query | orderBy:orderProp")>

注意:然后,您可以删除在$watch

上设置query的代码

编辑:正如您在控制器中特别想要的那样:

您的过滤器初始化为空白的原因是因为您的$ scope.species数据是异步填充的。触发第一个$watch时,没有要过滤的数据。在您输入查询之前,情况仍然存在。

要解决此问题,请在数据到达后设置$watch,如下所示:

$http.get('species.json').success(function(data) {
    $scope.species = data;
    $scope.$watch('query', function (query) {
        $scope.filteredData = $filter('filter')($scope.species, query);
    });
});

或者,您可以在success回调中手动运行一次过滤功能。