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')

もっとエレガントな解決策があるかどうか疑問に思っていますが

4

1 に答える 1

8

コードが実際にいつ実行されるかによって異なります。このプランカーを試してみましたが、うまくいきました。

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 実行シーケンス内で追加のモジュールを追加する必要があります。タイムアウトと非同期読み込みが失敗しました。

于 2013-06-24T22:09:26.503 に答える