Angular - 在app常量

时间:2015-10-31 14:04:42

标签: angularjs

我希望在模块常量中注入位置提供程序,这是不可能的

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未定义。

任何解决方案?

1 个答案:

答案 0 :(得分:2)

AngularJS 中的

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对象仍在那里。