angular 服务在调用控制器之前终止

angular service dies before controller is invoked

我正在开发一个使用 public API 的 angular 应用程序。我似乎无法将服务对象传递到控制器中。错误是

TypeError: Cannot read property 'searchRole' of undefined

这一行:

var model = govtracksvc.searchRole();

当我单步执行调试器时,它首先访问服务文件。 govtrack & govtracksvc 都被创建,并且 govtrack 被注入。然后服务对象死在文件的末尾,因为当它调用控制器文件时,服务变量是未定义的。当应用程序进入控制器文件时,我缺少使服务对象保持活动状态的 link。任何帮助都是巨大的。

rep.module.js

(function () {
    var angular = require('angular');  //browserify bundling with NPM
    angular.module('RepresentativeApp', []);
    require('./rep.service.js');
    require('./Rep.js');

})();

rep.service.js

var govtracksvc = (function () {
    angular
        .module('RepresentativeApp')
        .factory('govtracksvc', govtracksvc);

    var govtrack = require('govtrack-node');

    govtracksvc.$inject = ['govtrack'];

    function govtracksvc(govtrack) {
        var service = { searchRole: searchRole };
        return service;
        function searchRole(obj) { //do stuff }
    }
})();

Rep.js

var Rep = (function () {
    angular
        .module('RepresentativeApp')
        .controller('Rep', [Rep]);

    Rep.$inject = ['govtracksvc'];

    function Rep(govtracksvc) {
        var model = govtracksvc.searchRole();
        return model;
    }
})();

更新

我还没有深入了解,但我相信这与 browserify 捆绑模块的方式有关。我认为 IIFE 是问题的一部分。

我将 API 对象作为 .value() 传入。更简单的解决方案!