2013-06-24 59 views
4

比方說,你有一個注入模塊時,你只需要一個模塊變量訪問

var app = angular.module('Mod1',[]) 

,現在你需要注入別的東西來該模塊,但你不能改變這條線,你只有訪問app變量。

所以這不起作用吧?

var mod2 = angular.module('mod2',[]).factory('$myService', function(){ 
     return { do: function(){alert('doing'); } 
}) 

app.directive('foo',[$myService]) // $myService here is undefined 

當然,你總是可以做:

injector = angular.injector(['mod2']) 
$myService = injector.get('$myService') 

雖然我不知道是否有更好的解決方案

+0

相關http://stackoverflow.com/questions/10924503/angularjs-inject-module-after-app-initialization –

回答

5

當是你的代碼的實際運行情況而定。 我試過this plunker,它工作。

app.js

var app = angular.module('plunker', []); 

myModule.js

var myModule = angular.module('myModule', []); 
myModule.service('MyService', function() { 
    return {test: 'MyService'}; 
}); 

app.requires.push('myModule'); 

app.controller('MainCtrl', ['$scope','MyService', function($scope, MyService) { 
    $scope.name = MyService.test; 
}]); 

的index.html

<head> 
    <script src="app.js"></script> 
    <script src="myModule.js"></script> 
</head> 

您需要app.js後添加額外的模塊被加載,但內相同的JavaScript執行順序。超時和異步加載失敗了。

+0

app.requires.push ...我以前從未見過的東西 – Agzam

+1

app.requires是一個數組,push只是一個數組方法 –