我是棱角分明的新人并没有真正理解它所以请如果有任何明显的错误或更好的方法来实现我正在做的事情让我知道。
我正在使用工厂在控制器之间共享数据。我这样做是因为会有大量请求列出大量数据。
(function () {
'use strict';
angular
.module('app.customers')
.controller('CustomersController', CustomersController)
.factory('dataShare',function($rootScope,$timeout){
var service = {};
service.data = false;
service.sendData = function(data){
this.data = data;
$timeout(function(){
$rootScope.$broadcast('data_shared');
},100);
};
service.getData = function(){
return this.data;
};
return service;
});
在我正在做的控制器中
$http.post("http://api.dev/v1/customers/search", $scope.searchData)
.then(function (response) {
$scope.customers = response.data;
dataShare.sendData(response.data);
},
//....
我有一个单独的NgTables控制器,我有这个:
$scope.$on('data_shared',function(){
$scope.customers = [{}];
var data = dataShare.getData();
console.log("here");
$scope.customers = data;
console.log($scope.customers.length);
vm.tableParams3 = new ngTableParams({
page: 1, // show first page
count: 10,
// count per page
}, {
total: $scope.customers.length, // length of data
getData: function (params) {
// use build-in angular filter
var filteredData = params.filter() ?
$filter('filter')($scope.customers, params.filter()) :
$scope.customers;
var orderedData = params.sorting() ?
$filter('orderBy')(filteredData, params.orderBy()) :
$scope.customers;
params.total(orderedData.length); // set total for recalc pagination
return (orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count()));
}
});
正确传递数据并且console.log的输出是预期的,但页面计数刚被完全忽略。但如果我更改下面的页面选项,它将从该页面开始。
vm.tableParams3 = new ngTableParams({
page: 1, // show first page
count: 10, // count per page
},
我尝试了各种各样的,阅读了大约20个不同的问题和ng-tables文档,但无论我做什么,我都无法让它工作。任何帮助,将不胜感激。
答案 0 :(得分:0)
我不是Angular的专家,但对我而言,它似乎只是设置了页码。
在你的
下$scope.customers = data;
尝试设置您要开始的页面。
$scope.page = "1";