Tôi có một mô-đun. Nó có một khối cấu hình, một nhà cung cấp, và một hằng số được xác định. Khối cấu hình tham chiếu cả hằng số và nhà cung cấp. Tôi nhận thấy rằng hằng số của tôi có thể được định nghĩa trước hoặc sau khối cấu hình của tôi. Tuy nhiên, nhà cung cấp phải được xác định TRƯỚC KHI khối cấu hình hoặc nếu không tôi sẽ gặp lỗi.Tại sao nhà cung cấp phải được xác định trước một khối cấu hình
Error: [$injector:modulerr] Failed to instantiate module loadOrder due to:
[$injector:unpr] Unknown provider: greetingsProvider
Dưới đây là một số mẫu mã:
var myModule = angular.module('loadOrder', []);
//if I define this after the config block, I get an error
angular.module('loadOrder').provider('greetings',[ function(){
this.$get = [function(){
return { greet: function(){ return "Hola"; } };
}];
}]);
myModule.config(['$provide', 'greetingsProvider', 'planetName', function($provide, loadOrderProvider, planetName){
$provide.value('someVals',[3,6,8]);
console.log("Lets go to", planetName);
}]);
myModule.constant('planetName', 'Saturn');
Tại sao điều này? Tại sao tôi không thể xác định nhà cung cấp của mình sau khối cấu hình của tôi?
Tôi vẫn còn bối rối vì nếu tôi tham chiếu một dịch vụ trong khối chạy của mình, nó sẽ không gây ra lỗi nếu dịch vụ được xác định sau khối chạy. Bạn có biết tại sao thứ tự định nghĩa không quan trọng đối với các dịch vụ/khối chạy nhưng nó có quan trọng đối với các nhà cung cấp/khối cấu hình không? – Selah
@Selah khối chạy được gọi là sau khi tất cả mọi thứ đã được thiết lập. – zeroflagL
@zeroflagL Bạn có thể làm rõ lý do tại sao nhà cung cấp phải xác định trước khối cấu hình. Nếu không có gì xảy ra ngay lập tức, tại sao sẽ có lỗi nếu nhà cung cấp được xác định sau khối cấu hình, nhưng không phải nếu nó được xác định trước đó? – dnc253