1

私はAngular自分のアプリケーションと同様にルーティングを使用していますngTable。私のページの 1 つには、検索フォームが含まれており、検索するたびにGETngTableメソッド (MongoDB)を使用してデータベースからデータが取得されるため、(テーブル)を検索するたびに更新する必要があります。私の問題は、テーブルが初めてページをロードした後、1 回だけ更新されます。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){

        });
}
});
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 に答える