如何在promise的控制器之外使用函数变量
AngularJs - how to use function variable outside controller of promise
service.js
.factory('tableService', ['$http', function($http){
return {
getTable: function() {
return $http.get("data/timesheet.json");
}
}
}])
controller.js
.controller('tableCtrl', function($filter, $sce, ngTableParams, tableService) {
var promise = tableService.getTable();
promise.then(
function(payload) {
data = JSON.stringify(payload.data);
alert(data);
},
function(errorPayload) {
$log.error('failure loading movie', errorPayload);
});
//Editable
this.tableEdit = new ngTableParams({
page: 1, // show first page
count: 10 // count per page
}, {
total:data.length, // length of data
getData: function($defer, params) {
$defer.resolve(data.slice((params.page() - 1) * params.count(), params.page() * params.count()));
}
});
})
我对AngularJs很陌生。问题是,我没有得到JSON文件数据在我的表。在这里,我使用警报来检查数据是否来自JSON文件,它的工作,但不知何故得到空表作为数据没有显示在我的表。有人能帮帮我吗?
你的代码有几个问题,你应该使用$scope当你绑定数据到视图,
app.controller('myController', function($scope, myService) {
myService.getJSON().then(function(data){
$scope.myData =data;
console.log(data);
});
});
app.service('myService', function($http) {
this.getJSON = function() {
return $http.get('test.json').then(function(data) {
return data.data.items;
});
};
});
您需要一个作用域变量或一个控制器变量,并将获取的数据分配给它。下面是一个控制器变量的解决方案:
.controller('tableCtrl', function($filter, $sce, ngTableParams, tableService) {
var self = this;
var promise = tableService.getTable();
self.tableData = [];
promise.then(
function(payload) {
data = JSON.stringify(payload.data);
alert(data);
self.tableData = data;
},
function(errorPayload) {
$log.error('failure loading movie', errorPayload);
});
self.tableEdit = new ngTableParams({
page: 1, // show first page
count: 10 // count per page
}, {
total: self.tableData.length, // length of data
getData: function($defer, params) {
$defer.resolve(total:tableData.slice((params.page() - 1) * params.count(), params.page() * params.count()));
}
});
})
EDIT:下面的答案是在OP的编辑之前发布的
您指的是$scope
的data
属性:
total:$scope.data.length
但是你没有给它赋值。你应该更新你的promise回调:
function(payload) {
data = JSON.stringify(payload.data);
alert(data);
$scope.data = data;
}
相关文章:
- 访问嵌套函数结构中的JavaScript父函数变量
- Javascript函数变量传递语法问题
- JavaScript 函数变量范围问题
- 在 promise 中获取构造函数变量
- 将函数结果传递给Javascript中的另一个函数变量
- 用对象设置函数变量's值
- Javascript函数变量应生成错误,而不是未定义的错误
- 我可以访问用户脚本中的匿名函数变量吗?
- 在实例化期间使用构造函数变量
- 为什么在 JavaScript 中不能用函数变量覆盖字符串变量
- JavaScript 允许调用函数访问调用函数变量
- 如何在嵌套原型中访问 JavaScript 构造函数变量
- 对函数变量的 JavaScript 控制台日志输出感到困惑
- 如何将函数变量传递给主干模型上的 jQuery 事件
- 如何访问构造函数变量
- 实例函数变量不会更改
- 为什么函数变量在变量之后是未定义的
- 用内部函数变量更改外部函数变量?Javascript
- Javascript - 使用闭包递增静态函数变量模拟
- 异步 JavaScript 静态函数变量