2014-03-06 41 views
0

这是我第一次尝试在Wordpress中使用Angular。我想注入$locationconfig模块,所以我可以这样使用它:

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

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

] 

不幸的是,使用$location$locationProviderconfig造成未知提供程序错误。我已经包含了所有必要的依赖关系,即。 angular-route.min.js,但是,它仍然没有正确解决。

如果我删除$location它的作品。

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

    # ROUTES 

] 

编辑

如果我$locationProvider取代$location我得到,如果你使用的名称$locationProvider可以注射的名字Failed to instantiate module app due to: TypeError: Object # has no method 'hasPrefix'

+0

这可以帮助你:在注射服务的app.config(http://stackoverflow.com/questions/15937267/inject-service-in -app-CONFIG)。 – PrimosK

+0

我会研究一下。谢谢。 –

+0

我认为你只能在'config'中注入提供者,并且只在'app.run'中提供服务 – doodeec

回答

0

错误是一个简单的错字。

$location.hasPrefix('!');

应该

$location.hashPrefix('!');

1

似乎罚款。

Here is a plunker

而且JS:

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

对于从文档参考:

配置块 - 在供应商登记 和配置阶段得到执行。只有提供者和常量可以注入 到配置块中。这是为了防止服务在完全配置之前发生意外实例化 。

+0

嗯,'$ location'或'$ locationProvider'都可以工作,如果我将它们赋值为'$ locationProvider.html5Mode = true;',但是如果我使用方法'$ locationProvider.html5Mode(true);'http://stackoverflow.com/questions/14642634 /角位置的哈希前缀 –