簡體   English   中英

角度-工廠應從第三方回調中返回值

[英]Angular - factory should return value from 3rd party callback

我目前正在嘗試編寫角度服務來處理第三方API。 API對象處理所有事情。 您只需創建對象,在其上調用一個函數,並獲得有效負載。 當我逐步調試器中的service函數時,我可以在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;
    });
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM