gpt4 book ai didi

javascript - 在 config() 模块中注入(inject)依赖 - AngularJS

转载 作者:IT王子 更新时间:2023-10-29 02:56:34 25 4
gpt4 key购买 nike

目前在 app.js 中我有以下路线:

var gm = angular.module('gm', ['gm.services','gm.directives','gm.filters','gm.controllers','ngSanitize']);

gm.config(['$routeProvider', 'Path', function($routeProvider, Path) {

$routeProvider.when('/login', {
templateUrl: Path.view('application/authentication/login.html'),
controller: 'authController'
});

$routeProvider.when('/dashboard', {
templateUrl: Path.view('application/dashboard/index.html'),
controller: 'dashboardController'
});

$routeProvider.otherwise({
redirectTo: '/login'
});

}]);

如您所见,我正在尝试注入(inject) Path 依赖项。虽然我收到一条错误消息,说找不到该提供商。我认为这是因为配置模块提供程序首先执行。下面是我在“services.js”中的路径提供者定义

gm.factory("Path", function() {
return {
view: function(path) {
return 'app/views/' + path;
},
css: function(path) {
return 'app/views/' + path;
},
font: function(path) {
return 'app/views/' + path;
},
img: function(path) {
return 'app/views/' + path;
},
js: function(path) {
return 'app/views/' + path;
},
vendor: function(path) {
return 'app/views/' + path;
},
base: function(path) {
return '/' + path;
}
}
});

如何将此提供程序注入(inject)配置模块?

最佳答案

  1. angular.config 只接受提供者
  2. 每个服务、工厂等都是 Provider 的实例

因此,要在配置中注入(inject)服务,您只需通过在服务名称中添加“Provider”来调用该服务的提供者。

angular.module('myApp')
.service('FooService', function(){
//...etc
})
.config(function(FooServiceProvider){
//...etc
});

根据 angularjs 提供者 documentation

... if you define a Factory recipe, an empty Provider type with the $get method set to your factory function is automatically created under the hood.

因此,如果您有一个工厂(或服务),例如:

.factory('myConfig', function(){
return {
hello: function(msg){
console.log('hello ' + msg)
}
}
})

在访问返回的对象之前,您首先需要使用 $get 方法调用您的工厂:

.config(function(myConfigProvider){
myConfigProvider
.$get()
.hello('world');
});

关于javascript - 在 config() 模块中注入(inject)依赖 - AngularJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17485900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com