我想从一个提供者(mymodule.provider(…))访问$窗口)但是我需要在配置时的这种依赖关系(所以我没有把这样的依赖关系放在$ get中)。
目前我没有访问$窗口,并且我在配置时间需要这样的依赖性的原因是因为我需要访问$ window.STATIC_URL,这是窗口中的一个常量,我使用它来配置状态的模板($ stateProvider)。
当前代码是:
mymodule.provider('StaticUrl',function() { this.url = function() { return window.STATIC_URL || 'static'; }; this.$get = this.url; });
这是因为我在配置和运行时都需要这样的值(我使用它不仅仅是设置状态,所以当我在控制器中需要这样的URL时,我将其导入为依赖)。
//config mymodule.config(['StaticUrlProvider','$stateProvider',function(sup,$sp){ //... $sp.state('main',{ templateUrl: sup.url() + 'path/to/template.html' }); //... }]); //run-time (in this case: a controller) mymodule.controller('MyController',['$scope','StaticUrl',function($s,su) { var buildingType = /*a complex expression here*/; $s.buildingPicture = $su + 'path/to/building/pics/' + buildingType + '.png'; }]);
给定一个现有的数据集,我有一个图片,每个条目位于STATIC_URL下,必须提供。所以这意味着我在两个阶段都使用这样的常数。
我将如何以更加角色的方式进行(即不依赖全局变量)?有没有办法可以从提供者访问$窗口而不提高moduleerr?
注入$ windowProvider并调用$ windowProvider $ get()
原文链接:https://www.f2er.com/angularjs/144556.html