2017-05-15 160 views
0

全局搜索以下是我正在試圖仿效全局搜索功能:https://plnkr.co/edit/DRagFo?p=previewAngularJS不工作

這裏是我的嘗試: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

該問題與您如何在script.js中填充parsedEntries無關。

它與指令ST-表,取決於parsedEntries的值,它是在開始時的空引用,但得到$http.get後來經過填充的過早初始化做。

在該示例中,所有工作都是因爲行數據全部可用於st-table uppfront。你可以說這是st表的缺陷,但一個小竅門可以讓你去。

您可以選擇通過引入ng-if="ready"或其他東西來推遲st表的初始化。在提取值後,僅在$http.get.then()中設置ready=true

<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