2014-03-06 61 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 /角位置的哈希前綴 –