AngularJS全局搜索无效

时间:2017-05-15 00:44:05

标签: angularjs

这是我试图模仿的全局搜索功能:https://plnkr.co/edit/DRagFo?p=preview

这是我的尝试:https://plnkr.co/edit/n4aczq?p=preview

它们的写法略有不同,但我似乎无法弄清楚为什么全局搜索不起作用。我认为它与$scope.parsedEntries.push(parse(content));中的script.js

有关
angular.module('myApp', ['smart-table','lrDragNDrop'])
    .controller('mainCtrl', ['$scope', '$timeout', '$http',
        function ($scope, $timeout, $http) {

                        var url = 'https://spreadsheets.google.com/feeds/list/1O7M5gaEGlyE5gkOBARJrxJJMBYiTwz2THVjgbaTx9v8/od6/public/values?alt=json';
            var parse = function (entry) {
                console.log(entry);
                var description = entry.gsx$description.$t;
                var cause = entry.gsx$cause.$t;
                return {

                    description: description,
                    cause: cause
                };
            };
            $http.get(url)
                .then(function (response) {
                    var entries = response.data.feed.entry;
                    $scope.parsedEntries = [];
                    for (var key in entries) {
                        var content = entries[key];
                        $scope.parsedEntries.push(parse(content));

                    }
                });

        }
    ]);

提前致谢。

1 个答案:

答案 0 :(得分:1)

问题与您在script.js中填充parsedEntries的方式无关。

它与指令st-table的过早初始化有关,它取决于parsedEntries的值,它在开头是一个空引用,但后来在$http.get之后填充。

在示例中一切正常,因为行数据全部可用于st-table uppfront。你可以说这是st-table的缺陷,但是一个小技巧可以帮助你。

您可以选择通过引入ng-if="ready"或其他内容来推迟st-table的初始化。然后,在获取值后,仅在ready=true中设置$http.get.then()

<div class="table-container" ng-if="ready">

then() function

              $http.get(url)
                .then(function (response) {
                    var entries = response.data.feed.entry;
                    $scope.ready = true;//populate this ready
                    $scope.parsedEntries=[];
                    for (var key in entries) {
                        var content = entries[key];
                        $scope.parsedEntries.push(parse(content));

                    }
                });

$ scope.parsedEntries = [];

Working plnkr