Using Browserify with Angular JS - - 将服务传递到控制器

Using Browserify with Angular JS - - Passing a service into a Controller

正如标题所示,我最近开始了一个新项目,我正在使用 Browserify(和 Gulp)连接我的 Angular JS 文件(和 Angular 源文件) 到一个文件中 - bundle.js.

我决定将我的控制器、服务和指令拆分成单独的文件,然后 "require" 使用 Browserify 将它们 app.js 放入我的文件中,如下所示:

(function () {
    'use strict';
    require('angular');

    var tabCtrl = require('./controllers/tabs'),
    dataService = require('./services/');

    angular.module("citiToolsApp", [])
        .service('dataService', ['$scope', dataService])
        .controller('TabController', ['$scope', tabCtrl]);
}());

然而,当我尝试从我的选项卡控制器中访问我的服务 - 数据服务时,如下所示:

module.exports = function($scope, tabController) {

    dataService.getPrograms(function (response) {
        console.log(response.data);
    });

};

我收到一个未定义的错误。我相信我需要将 dataService 传递到 tabController 中,但我不确定执行此操作的语法。有人可以帮忙吗?

谢谢

编辑

我还添加了我的服务文件的内容以获取更多详细信息:

module.exports = function($http) {

    this.getPrograms = function(callback) {
        $http.get('/programs')
            .then(callback);
    };

};

我意识到自己的错误。我需要传入 $http 而不是 $scope。所以代替:

(function () {
    'use strict';
    require('angular');

    var tabCtrl = require('./controllers/tabs'),
    dataService = require('./services/');

    angular.module("citiToolsApp", [])
        .service('dataService', ['$scope', dataService])
        .controller('TabController', ['$scope', tabCtrl]);
}());

应该是:

(function () {
    'use strict';
    require('angular');

    var tabCtrl = require('./controllers/tabs'),
    dataService = require('./services/');

    angular.module("citiToolsApp", [])
        .service('dataService', ['$http', dataService])
        .controller('TabController', ['$scope', tabCtrl]);
}());