我创建了一个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但不起作用。我在其他功能中有类似的代码,工作正常,我不明白。
答案 0 :(得分:1)
实际上,由于你正在调用api,你可能不在摘要周期中,你应该尝试$scope.$apply()
,如下:
$scope.$apply(function() {
$scope.reloadTable = function(publications){
$scope.tablePublications.data = publications;
$scope.tablePublications.reload();
$scope.tablePublications.reloadPages();
}
});