Angular - 工厂应该 return 来自第 3 方回调的值
Angular - factory should return value from 3rd party callback
我目前正在尝试编写一个 angular 服务来处理第三方 API。 API 对象处理一切。您只需创建对象,对其调用函数,然后获取有效载荷。当我在调试器中单步执行服务函数时,我可以在 findRole 函数中看到 JSON 响应,但随后出现错误:
TypeError: Cannot read property 'then' of undefined
关于如何使这项工作有任何想法吗?
模块
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;
};
这里是端点,如果有人想查看数据:https://www.govtrack.us/api/v2/role/?current=true
下面是使用回调的代码示例,看看是否适合您的需要:
模块
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, $scope) {
var rep = this;
govtracksvc.findRole(rep.govtrack, function(result){
rep.list = result;
if(!$scope.$$phase){
$scope.$apply();
}
});
};
服务
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;
});
};
我目前正在尝试编写一个 angular 服务来处理第三方 API。 API 对象处理一切。您只需创建对象,对其调用函数,然后获取有效载荷。当我在调试器中单步执行服务函数时,我可以在 findRole 函数中看到 JSON 响应,但随后出现错误:
TypeError: Cannot read property 'then' of undefined
关于如何使这项工作有任何想法吗?
模块
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;
};
这里是端点,如果有人想查看数据:https://www.govtrack.us/api/v2/role/?current=true
下面是使用回调的代码示例,看看是否适合您的需要:
模块
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, $scope) {
var rep = this;
govtracksvc.findRole(rep.govtrack, function(result){
rep.list = result;
if(!$scope.$$phase){
$scope.$apply();
}
});
};
服务
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;
});
};