2016-05-13 22 views
0

ich diese Struktur in meinem Skript A haben:Inject AngularJS Richtlinie

module.exports = angular.module('myApp').controller(..).directive(..) 

Ich möchte weitere Richtlinie injizieren, so dass ich so etwas wie dieses:

module.exports = angular.module('myApp').controller(..).directive(..).directive(..) 

Ich möchte von der dies zu tun außerhalb des Skripts A.

Irgendwelche Ideen, wie dies erreicht werden kann? Ich bin immer noch auf dem eckigen, und jede Hilfe wird wirklich geschätzt! Danke vielmals!

Antwort

0

Wenn ich richtig verstehe, möchten Sie Ihre Anweisung dynamisch erstellen. (In unterschiedlichen Winkelmodul) Sie in der Art und Weise Schlag codieren können,

//dynamic directive dyDir.js 
module.exports = function (app) { 
    app.directive(...) 
}; 

Ihr Skript

var dyDir = require('./dyDir.js'); 

var yourApp = angular.module('appName',[]); 
yourApp.controller('testCtrl', ...) 
dyDir(yourApp); //parse angular module instance as parameter 

Obwohl dies funktionieren würde, aber ich glaube wirklich nicht, angular.module verwenden und die commonjs module an den gleichen Zeit ist eine gute Übung, denn das würde den anderen Entwickler so durcheinander bringen.

Ich hoffe, dies würde Ihr Problem lösen. :)

+0

Vielen Dank für Ihre Hilfe:

Sie würden eine neue Datei mit folgendem Inhalt erstellen! Eigentlich möchte ich meine Anweisung in das vorhandene Winkelmodul einspeisen. Ich versuche, einen vorhandenen Code hier wiederzuverwenden. Ich habe versucht, was Sie sagten, aber ich kann nicht sagen, ob das funktioniert, weil ich mein Skript nicht aufrufen kann. Ich habe Assets.Yaml-Datei, die Abhängigkeiten für das Skript mit dem "module.exports = enthält .. "(Ich würde gerne ändern), und ich habe eine Abhängigkeit von dyDir.js hinzugefügt, aber das scheint nicht zu funktionieren. Dies scheint ein weiteres Problem zu sein. Ich arbeite daran, und würde mich freuen, wenn Sie eine Idee haben. Vielen Dank im Voraus! – Maria

0

ich in der folgenden Art und Weise dieses Problem gelöst wurde - wenn es keine Hilfe für jeden sein kann:

Angenommen, Sie ein vorhandenes Modul MyModule haben, und zwei Controllern myController1 und myController2 (Code für die beiden Controller ist in den Dateien controller1.js und controller2.js). Dies ist der Code in einer Datei myapp.js:

module.exports = angular.module("myModule", []) 
.controller('myController1', require('./controller1.js')) 
.controller('myController2', require('./controller2.js')) 

Angenommen, Sie zusätzliche Richtlinie in Ihr Modul MyModule injizieren möchten. Sie würden dieses Modul wiederverwenden.

require('./myapp.js'); 
require('./mydirective.js'); //this is your new directive 
var app = angular.module("myModule"); //get an existing module 

app.directive('directiveName', function() { 
    return { 
     ... 
    } 
})