我希望在模块常量中注入位置提供程序,这是不可能的
app.constant('foo', {
hostName: <<$location.$$root>> //which is not possible.
}
所以,我试过这个:
app.provider('foo', ['$locationProvider', function($locationProvider) {
this.data = {
hostName: $locationProvider.$$root + ":1337"
};
this.$get = function() {
return this.data;
};
}]);
但是再次这不起作用,因为$locationProvider.$$root
未定义。
任何解决方案?
答案 0 :(得分:2)
Module
常量用于注册Provider
可以访问的值/对象,所以基本上你不能通过尝试去另一种方式在Provider
声明中使用Constant
服务。
针对这种情况的黑客攻击是从window.location
JavaScript对象手动提取您想要提取的值,即根页位置:
app.constant('foo', {
hostName: window.location.protocol + window.location.host // .host gives you the page hostname appended with the port used to render the page
}
请记住,当 AngularJS 无法完成工作时,大多数网络浏览器提供的普通JavaScript对象仍在那里。