1

Angular在我的应用程序中使用路由以及ngTable. 我的一个页面包含一个ngTable, 和一个搜索表单,每次搜索时数据都来自使用GET方法 (MongoDB) 的数据库,所以每次搜索时ngTable(table) 都应该更新,我的问题是表是第一次加载页面后仅更新一次。

用于部分页面的控制器:

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){

        });
}
});
4

2 回答 2

1

我遇到了同样的问题。每次发生新搜索时都需要重新加载 $scope.tableParams,因此每次单击搜索按钮时。一种简单的方法是将 $scope.tableParams.reload() 包装在一个函数中,然后在单击搜索按钮时调用该函数。

控制器代码:

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

html代码:

<button ng-click="doSearch()">Search</button>
于 2014-04-28T16:16:00.037 回答
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-table 设置,然后像第一次那样初始化。

于 2014-04-27T19:50:23.343 回答