【问题标题】:Injecting $location into Angular config causes 'Unkown Provider' error将 $lotion 注入 Angular 配置会导致“未知提供者”错误
【发布时间】:2014-03-06 18:05:09
【问题描述】:

这是我第一次尝试将 Angular 与 Wordpress 结合使用。我想将$location 注入到config 模块中,这样我就可以这样使用它:

app = angular.module 'app', [ 'ngResource', 'ngRoute' ]
app.config [ '$routeProvider', '$location', ( $routeProvider, $location )->

    $location.hasPrefix '!'
    $location.html5Mode true

]

很遗憾,将$location$locationProviderconfig 一起使用会导致Unknown Provider 错误。我已经包含了所有必要的依赖项,即。 angular-route.min.js,但是,它仍然没有正确解决。

如果我删除 $location 它会起作用。

app = angular.module 'app', [ 'ngResource', 'ngRoute' ]
app.config [ '$routeProvider', ( $routeProvider )->

    # ROUTES 

]

编辑

如果我将 $location 替换为 $locationProvider 我会得到 Failed to instantiate module app due to: TypeError: Object # has no method 'hasPrefix'

【问题讨论】:

  • 这可能会对您有所帮助:Inject service in app.config.
  • 我会调查的。谢谢。
  • 我认为您只能在config 中注入提供程序,并且只能在app.run 中注入服务
  • 如果我使用 $locationProvider 而不是 $location,我仍然会收到错误消息

标签: angularjs coffeescript


【解决方案1】:

如果您使用名称 $locationProvider 作为注射剂的名称,似乎很好。

Here is a plunker.

还有js:

angular.module('myApp', ['ngResource', 'ngRoute'])
.config(function($routeProvider, $locationProvider) { // provider-injector
    $locationProvider.hasPrefix = '!';
    $locationProvider.html5Mode = true;
  });

供文档参考:

配置块 - 在提供者注册期间执行 和配置阶段。只能注入提供者和常量 进入配置块。这是为了防止意外实例化 完全配置之前的服务。

【讨论】:

  • 嗯,$location$locationProvider 都有效,如果我像 $locationProvider.html5Mode = true; 一样分配它们,但如果我使用方法 $locationProvider.html5Mode(true); stackoverflow.com/questions/14642634/… 则不行
【解决方案2】:

错误是一个简单的错字。

$location.hasPrefix('!');

应该是

$location.hashPrefix('!');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-15
    • 2016-03-26
    • 1970-01-01
    • 2017-04-25
    • 1970-01-01
    • 2016-12-07
    • 2014-04-10
    • 1970-01-01
    相关资源
    最近更新 更多