Javascript ng表格类型错误:无法设置属性'$数据';空的
我使用ng表来显示来自API调用的信息,我将其分组,如上的示例所示 但是,网站上的示例使用了静态信息,因为我每次都需要进行新的API调用。当我不包括$Javascript ng表格类型错误:无法设置属性'$数据';空的,javascript,angularjs,ngtable,Javascript,Angularjs,Ngtable,我使用ng表来显示来自API调用的信息,我将其分组,如上的示例所示 但是,网站上的示例使用了静态信息,因为我每次都需要进行新的API调用。当我不包括$范围。$watch('groupby',function(value)函数时,我会慢慢地显示第一个初始调用的表 angular.module('myApp.controllers', ['ngTable','ui.bootstrap','dialogs']) .controller('HomeCtrl', function($scope,$log,
范围。$watch('groupby',function(value)
函数时,我会慢慢地显示第一个初始调用的表
angular.module('myApp.controllers', ['ngTable','ui.bootstrap','dialogs'])
.controller('HomeCtrl', function($scope,$log, $rootScope, $modal, TimeService, EventServiceAPI, $filter, ngTableParams) {
var datum = new Date().setHours(0,0,0,0);
$scope.datum = datum;
var timestamp = Math.round(new Date().getTime()/1000);
var findAllEvents = function(timestampdata) {
EventServiceAPI.query({start: timestampdata, end: timestampdata + 3*24*60*60}).$promise.then(function(data) {
//var data = $filter('orderBy')(data, 'event.startHour');
$scope.$watch("data", function () {
$scope.tableParams.reload();
});
$scope.tableParams = new ngTableParams({
page: 1, // show first page
count: 100 // count per page
}, {
groupBy: function(item) {
return 'Start vanaf ' + item.event.startHour + ' uur';
},
total: data.length,
getData: function($defer, params) {
var orderedData = params.sorting() ?
$filter('orderBy')(data, 'event.startHour') :
data;
$defer.resolve(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count()));
}
});
$scope.$watch('groupby', function(value){
$scope.tableParams.settings().groupBy = value;
console.log('Scope Value', $scope.groupby);
console.log('Watch value', this.last);
console.log('new table',$scope.tableParams);
$scope.tableParams.reload();
});
})
};
findAllEvents(timestamp);
$scope.getEarlier = function() {
datum -= (24 * 60 * 60 * 1000);
$scope.datum = datum;
var timestamp = Math.round(datum/1000);
console.log(timestamp);
findAllEvents(timestamp);
};
});
编辑:
我现在可以显示数据,但不显示组:
var datum = new Date().setHours(0,0,0,0);
$scope.datum = datum;
var timestamp = Math.round(new Date().getTime()/1000);
EventServiceAPI.query({start: timestamp, end: timestamp + 3*24*60*60}).$promise.then(function(data) { $scope.data = data; initlizeTable(); });
var initlizeTable = function() {
// Table
$scope.tableParams = new ngTableParams({
page: 1, // show first page
count: 100 // count per page
}, {
groupBy: function(item) {
return 'Start vanaf ' + $scope.data.event.startHour + ' uur';
},
total: $scope.data.length,
getData: function($defer, params) {
var data = EventServiceAPI.query({start: timestamp, end: timestamp + 3*24*60*60});
var orderedData = params.sorting() ?
$filter('orderBy')($scope.data, 'event.startHour') :
$scope.data;
$defer.resolve($scope.data.slice((params.page() - 1) * params.count(), params.page() * params.count()));
}, $scope: { $data: $scope.data }
});
$scope.$watch('groupby', function(value){
$scope.tableParams.settings().groupBy = value;
console.log('Scope Value', $scope.groupby);
console.log('Watch value', this.last);
console.log('new table',$scope.tableParams);
$scope.tableParams.reload();
});
$scope.$watch('data', function(value){
$scope.tableParams.settings().groupBy = value;
console.log('Scope Value', $scope.groupby);
console.log('Watch value', this.last);
console.log('new table',$scope.tableParams);
$scope.tableParams.reload();
});
}
我知道现在为时已晚,但我认为最好为其他寻求同一问题答案的人对此发表评论 我也有同样的问题,并设法通过以下URL中的示例进行修复 在创建“ngTableParams”实例之后,我刚刚在代码中添加了以下代码行
$scope.params.settings().$scope = $scope;
看一看,为ngTableParams设置所有参数解决了问题这是它开始为我工作的时候。我在params.settings中添加了作用域
controller: function() {
...
$scope.myTableParams = new ngTableParams({
.
},{
...
getData: function ($defer, params) {
if (params.settings().$scope == null) {
params.settings().$scope = $scope;
}
.
.
}
我认为设置().$scope在$scope.params.reload()期间会变为null。我也可以通过为reload()添加超时来消除此错误。但这不是一个好方法。我认为reload()不会等到我们正确获得结果。回答很好。谢谢:)