我有一张桌子,以ng-table为特色。 当我删除此表的某些元素时,我想刷新数据列表以更新我的表。
我写入服务的回复删除此代码
$q.all(_.reject($scope.tableParams.data, function(item){
item._id == pid;
})).then(
$scope.tableParams.reload()
);
我需要遵循此路径,因为_.reject
是异步的,我使用了同步方式,我会在$scope.tableParams.reload()
完成之前获得_.reject
_.reject($scope.tableParams.data, function(item){
item._id == pid;
});
$scope.tableParams.reload();
但第一个代码不能满足我的策略。有什么办法吗?
已编辑
这是我的代码的一部分。通过这种方式,我填写了我的表格
$scope.tableParams = new ngTableParams({
page: 1,
count: 10
}, {
getData: function ($defer, params) {
var queryParams = params.sorting();
var page = params.page();
var size = params.count();
function initFilters(filters, queryParams){
$scope.search = {};
if("companyProfile" in queryParams && !("companyProfile" in filters)){
filters.companyProfile = ''
filters.companyProfile=$location.$$search["companyProfile"];
$scope.search.companyProfile = {};
$scope.search.companyProfile = filters["companyProfile"];
}
return filters;
}
var filters = angular.equals({}, params.filter()) ? initFilters(params.filter(), $location.$$search) : params.filter();
partners.filter({filter: filters.companyProfile, page: page, per_page: size, start: filters.start, end: filters.end, sorting:params.sorting()}).$promise.then(
function(response){
var result = response.hits.map(function(single){
single._source.raw_companyProfile = single._source.companyProfile;
single._source.raw_email = single._source.email;
return single._source;
});
var orderedData = params.sorting() ? $filter('orderBy')(result, params.orderBy()) : result;
$scope.$parent.total = response.total;
params.total(response.total);
$defer.resolve(orderedData);
}, function (error){
console.log(error);
}
);
}
});
当我尝试更新$scope.tableParams.data
并呼叫重新加载时,没有更新!
请帮助我!
答案 0 :(得分:0)
转换"外部"承诺有角度的承诺,适当的函数是$q.when()
:https://docs.angularjs.org/api/ng/service/ $ q#when。
但拒绝并非异步,并且它不会返回承诺:请参阅http://underscorejs.org/#reject。
我认为问题在于你假设它从$scope.tableParams.data
中删除了元素。它没有。它返回一个不包含被拒绝元素的新数组。