加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – 当您只能访问模块变量时注入模块

发布时间:2020-12-17 17:30:56 所属栏目:安全 来源:网络整理
导读:假设你有一个 var app = angular.module('Mod1',[]) 现在你需要向该模块注入其他内容,但是你不能改变那一行,你只能访问app变量. 所以这不起作用吧? var mod2 = angular.module('mod2',[]).factory('$myService',function(){ return { do: function(){alert(
假设你有一个

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

虽然我想知道是否有更优雅的解决方案

解决方法

这取决于您的代码实际运行的时间.
我尝试了 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执行序列中.超时和异步加载失败了.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读