2014-04-06 13 views
10

Cách chính xác để nhận thông số cấu hình $locationProvider từ một dịch vụ/bộ điều khiển là gì? Khi thực hiện tiêm phụ thuộc đơn giản với function ($locationProvider), tôi nhận được lỗi sau:

Unknown Provider : $locationProviderProvider <- $locationProvider <- myCtrl 
+1

Tôi nghi ngờ nó được tiêm, vì nó được sử dụng để tiêm một thể hiện của dịch vụ vị trí $. Có hàm băm getter/setter ([hash]); phương pháp trong dịch vụ vị trí $, nó có thể giúp bạn làm bất cứ điều gì bạn muốn. Nếu không, bạn nên giải thích ý định sử dụng hashPrefix của $ locationProvider. –

+0

@CemOzer Tôi đang thực hiện dịch vụ Reverse Url (ví dụ: tạo url từ tên tuyến đường), vì vậy tôi cần biết cách cấu hình dịch vụ vị trí hoàn toàn chung chung. –

+0

Tôi không thể nói rằng tôi hiểu ý định của bạn về việc "tạo một url từ tên tuyến đường", bạn có thể đưa ra một nghiên cứu điển hình hay không. –

Trả lời

26

Tôi cũng gặp lỗi này.

Bạn được phép tiêm $location vào bộ điều khiển, nhưng không phải a $locationProvider.

Thay vào đó, $locationProvider có thể được tiêm vào một phương pháp config:

var app = angular.module("myApp", []); 

app.config(function($locationProvider) { 
    $locationProvider.html5Mode(true); 
}); 

app.controller("myCtrl", function($location) { 
    $location.path("/some/path"); 
}); 

Và kể từ khi tôi làm sai lầm bổ sung này: nó không chỉ là bạn nên thêm một chút app.config, nhưng cũng nhớ để loại bỏ $locationProvider từ đối số điều khiển, hoặc bạn sẽ tiếp tục nhận được lỗi này.

Nếu tôi hiểu chính xác mọi thứ, cấu hình nhà cung cấp sẽ xảy ra trong giai đoạn cấu hình của vòng đời ứng dụng, trái ngược với pha chạy. Vì vậy, sự tách biệt này. You can read a bit more about these phases here.

Tôi nghi ngờ rằng lý do cho thông báo lỗi là khi bạn tiêm $foo vào bộ điều khiển, hãy tìm kiếm $fooProvider. Vì vậy, khi chúng tôi tiêm $locationProvider, nó đã tìm kiếm $locationProviderProvider.

+1

Tôi chấp nhận câu trả lời của bạn, tuy nhiên tôi tin rằng chỉnh sửa tiêu đề của bạn đã thay đổi câu hỏi - I đã hỏi cách cấu hình cấu hình $ location khi chạy, từ một bộ điều khiển. Câu trả lời thực tế là không thể. –

+0

Mael - ugh. Nếu bạn không thể cấu hình nó trong bộ điều khiển, thì bạn phải làm như thế nào? (cậu bé, tôi ghét Angular ...) –

Các vấn đề liên quan