[英]Angular - factory should return value from 3rd party callback
I am currently trying to write an angular service to handle a third party API. 我目前正在尝试编写角度服务来处理第三方API。 The API object handles everything.
API对象处理所有事情。 You just create the object, call a function on it, and get a payload.
您只需创建对象,在其上调用一个函数,并获得有效负载。 When I step through the service function in the debugger, I can see the JSON response inside the findRole function, but then it errors out on:
当我逐步调试器中的service函数时,我可以在findRole函数中看到JSON响应,但是随后出错:
TypeError: Cannot read property 'then' of undefined
Any ideas of how to make this work? 关于如何进行这项工作的任何想法?
var angular = require('angular'),
govtracksvc = require('./rep.service'),
Rep = require('./Rep'),
govtrack = require('govtrack-node');
angular.module('RepresentativeApp', [])
.value('govtrack', govtrack)
.factory('govtracksvc', govtracksvc)
.controller('Rep', Rep);
module.exports = angular.module('RepresentativeApp');
module.exports = function Rep (govtracksvc) {
var rep = this;
rep.list = govtracksvc.findRole(rep.govtrack);
};
module.exports = function govtracksvc(govtrack) {
var rep = this;
var data = {};
govtrack.findRole({current: true}, function (err, res) {
if (err) {
console.log('err: ', err);
}
return res;
}).then(function (res) {
data = res.objects;
});
return data;
};
Here is the endpoint, should anyone want to see the data: https://www.govtrack.us/api/v2/role/?current=true 这是端点,任何人都想查看数据时: https : //www.govtrack.us/api/v2/role/?current=true
Here is the code sample using callback, see if it suits your need: 这是使用回调的代码示例,请查看它是否适合您的需求:
Module 模组
var angular = require('angular'),
govtracksvc = require('./rep.service'),
Rep = require('./Rep'),
govtrack = require('govtrack-node');
angular.module('RepresentativeApp', [])
.value('govtrack', govtrack)
.factory('govtracksvc', govtracksvc)
.controller('Rep', Rep);
module.exports = angular.module('RepresentativeApp');
Controller 控制者
module.exports = function Rep (govtracksvc, $scope) {
var rep = this;
govtracksvc.findRole(rep.govtrack, function(result){
rep.list = result;
if(!$scope.$$phase){
$scope.$apply();
}
});
};
Service 服务
module.exports = function govtracksvc(govtrack, callback) {
var rep = this;
govtrack.findRole({current: true}, function (err, res) {
if (err) {
console.log('err: ', err);
return {};
}
return res.objects;
});
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.