2

Как видно из названия, я недавно начал новый проект, в котором я использую Browserify (и Gulp), чтобы объединить мои файлы Angular JS (и Angular sourcefile) в один файл - bundle.js.Использование Browserify с помощью Angular JS - - Передача службы в контроллер

Я решил разделить свои контроллеры, услуги и указание на отдельные файлы, а затем «требует» их в мой файл app.js используя Browserify так:

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

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

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

Однако, когда я пытаюсь получить доступ к моему сервис - DATASERVICE - из моей Tab контроллера, как это:

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

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

}; 

Я получаю неопределенную ошибку. Я считаю, что мне нужно передать dataService в tabController, но я не уверен в синтаксисе, чтобы это сделать. Может кто-нибудь помочь с этим?

Благодаря

EDIT

Я также добавил содержимое моего служебного файла для дальнейшей детализации:

module.exports = function($http) { 

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

}; 
+0

TabCtrl и DATASERVICE оба должны вернуть все свое определение, включая аннотацию массива. Я не говорю, что это решение вашей проблемы, но я думаю, что это шаг в правильном направлении. – CodePrimate

+0

Спасибо за ответ. Не могли бы вы ответить на пример кода, чтобы описать, что вы имеете в виду? Это действительно помогло бы. Извините, я немного нуб для Angular и Browserify. –

ответ

1

Я понял, что моя собственная ошибка. Мне нужно было перейти в $ 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]); 
}());