2014-04-14 71 views
1

我在我的應用程序中使用Angular路由以及ngTable。我的一個網頁包含一個ngTable和一個搜索表單,其中數據來自數據庫使用GET方法(MongoDB)每次搜索時,所以我每次搜索ngTable(表)都應該更新,而我的問題是在第一次加載頁面後,表格僅更新一次。
AngularJS ngTable未更新

用於部分頁面的位指示:

app.controller('SearchController',function($scope,ngTableParams,$http,$filter, $sce){ 

$scope.searching=function(){ 
    var str = $scope.search.tags; 
    var TagsArry = str.split(","); 

    $http.get('/api/GetDoc',{params:{title:$scope.search.title,tags:$scope.search.tags}}) 
     .success(function(data) 
     { 
      if(data.notExist!=-1){ 
       $scope.tableParams = new ngTableParams({ 
        page: 1,   // show first page 
        count: 10   // count per page 

       }, { 
        total: data.length, // length of data 
        getData: function($defer, params) { 
         $defer.resolve(data.slice((params.page() - 1) * params.count(), params.page() * params.count())); 

        } 
       }); 
      } 
      }) 
     .error(function(err){ 

     }); 
} 
}); 

回答

1

我遇到了同樣的問題。每次發生新的搜索時,您都需要重新加載$ ​​scope.tableParams,因此每次單擊搜索按鈕時都會這樣。一個簡單的方法是將$ scope.tableParams.reload()封裝在一個函數中,然後在單擊搜索按鈕時調用該函數。

控制器代碼:

$scope.doSearch = function() { 
    $scope.tableParams.reload(); 
} 

HTML代碼:

<button ng-click="doSearch()">Search</button> 
0

我也有類似的問題。這是ngTable指令的問題。它僅在data.length更改時更新。我終於解決了這個問題,只要你的$ HTTP請求之前加入這一行:

$scope['tableParams'] = {reload:function(){},settings:function(){return {}}}; 
$http.get('/api/GetDoc',{params:{title:$scope.search.title,tags:$scope.search.tags}}) 
    .success(function(data){ 
      /***** Your Code *********/ 
}); 

它是什麼,它重置NG表設置,然後將它用來初始化喜歡它的第一次。