2

Wie der Titel schon sagt, habe ich kürzlich ein neues Projekt gestartet, in dem ich Browserfigure (und Gulp) zum Verketten meiner Angular JS-Dateien (und der Angular-Quelldatei) verwende. in eine einzige Datei - bundle.js.Browserify mit Angular JS verwenden - Einen Dienst an einen Controller übergeben

Ich habe beschlossen, meine Controller, Dienste und Richtlinien in separate Dateien und dann „require“ sie in meine app.js Datei mit Browserify wie folgt aufgeteilt:

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

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

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

Jedoch, wenn ich versuche, meine zugreifen service - dataService - aus meinem Tab Controller heraus:

Ich bekomme einen undefinierten Fehler. Ich glaube, ich muss DataService in den TabController übergeben, aber ich bin nicht sicher über die Syntax, dies zu tun. Kann mir jemand helfen?

Dank

EDIT

Außerdem habe ich den Inhalt meiner Service-Datei zur weiteren Detail:

module.exports = function($http) { 

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

}; 
+0

tabCtrl und Dataservice sowohl ihre gesamte Definition einschließlich der Array Anmerkung zurückgeben sollte. Ich sage nicht, dass dies die Lösung für Ihr Problem ist, aber ich denke, es ist ein Schritt in die richtige Richtung. – CodePrimate

+0

Danke für die Antwort. Würde es Ihnen etwas ausmachen, mit einem Codebeispiel zu antworten, was Sie meinen? Es würde wirklich helfen. Tut mir leid, ich bin ein bisschen wie ein Noob zu Angular und Browserify. –

Antwort

1

ich meine eigenen Fehler erkannt habe. Ich musste $ http statt $ scope übergeben. Also statt:

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

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

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

es sein sollte:

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

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

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