3

私は好きなものを作成しましたng-table

data = $scope.publications;
        $scope.tablePublications = new ngTableParams({
       page: 1,            // show first page
       count: 20      // count per pages
    }, {
       total: data.length, // length of data
       getData: function($defer, params) {
           // use build-in angular filter
           var orderedData = params.sorting() ?
                               $filter('orderBy')(data, params.orderBy()) :
                               data;

       $defer.resolve(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count()));
   }
});

検索時に、API から情報を取得して関数を呼び出す関数が呼び出されますreloadTable

$scope.reloadTable = function(publications){
    $scope.tablePublications.data = publications;
    $scope.tablePublications.reload();
    $scope.tablePublications.reloadPages();
  }

$scope.tablePublications.data新しい情報が追加されましたが.reload()、機能せず、テーブルが更新されません。

そのためにコードを変更します

$scope.search = function(page){
    if($scope.searchText!=="" || $scope.searchText !== "undefined")
    {
        $scope.isSearch=true;
        Minisite.searchPublications({search: $scope.searchText, page: page}, function(publications){
            $scope.total=publications.total;
            $scope.publications = publications.publications;
            $scope.tablePublications.data = {};
            $scope.tablePublications.reload();
        });
    }
}

Minisite は、API からハッシュを取得するファクトリで、tablePublications をリロードしましたが、機能しません。他の関数にも同様のコードがあり、正常に動作しますが、理解できません。

4

1 に答える 1

1

実際には、API を呼び出していることを考えると、おそらくダイジェスト サイクルの外にいる$scope.$apply()ので、次のように試してみてください。

$scope.$apply(function() {
    $scope.reloadTable = function(publications){
        $scope.tablePublications.data = publications;
        $scope.tablePublications.reload();
        $scope.tablePublications.reloadPages();
    }
});
于 2014-08-18T21:51:25.263 に答える