gpt4 book ai didi

javascript - AngularJS - 注入(inject)提供者

转载 作者:行者123 更新时间:2023-11-30 08:47:15 24 4
gpt4 key购买 nike

编辑:使用 YEOMAN 构建我的应用,

我有以下YEOMAN 生成 提供商

'use strict';

angular.module('myApp')
.provider('myProvider', function () {

// Private variables
var salutation = 'Hello';

// Private constructor
function Greeter() {
this.greet = function () {
return salutation;
};
}

// Public API for configuration
this.setSalutation = function (s) {
salutation = s;
};

// Method for instantiating
this.$get = function () {
return new Greeter();
};
});

我正在尝试像这样将它注入(inject)到我的应用程序配置中:

'use strict';

angular.module('myApp', [
'ngRoute',
'myProvider'
])
.config(function ($routeProvider, myProvider) {
$routeProvider
.when('/', {
templateUrl: 'views/main.html',
controller: 'MainCtrl'
})
.otherwise({
redirectTo: '/'
});
});

我收到以下错误:

Uncaught Error: [$injector:modulerr] Failed to instantiate module lpSocialApp due to:
Error: [$injector:modulerr] Failed to instantiate module myProvider due to:
Error: [$injector:nomod] Module 'myProvider' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.

我错过了什么?

最佳答案

我可以在您的代码中看到两个错误:

1) 您不能在应用程序模块中注入(inject)“myProvider”,因为“myProvider”是在您的应用程序模块中定义的。

2) 'myProvider' 的名称错误,Angular 会自动将 'Provider' 附加到您的提供者。

这里是修复:

1) 在专用模块中定义您的提供者,并将这个新模块添加到您的应用程序模块依赖项中。

2) 将您的提供商重命名为“我的”(或在您的配置函数中注入(inject)“myProviderProvider”):

angular.module('myProviderModule', [])
.provider('my', function () { // or 'myProvider'

// Private variables
var salutation = 'Hello';

// Private constructor
function Greeter() {
this.greet = function () {
return salutation;
};
}

// Public API for configuration
this.setSalutation = function (s) {
salutation = s;
};

// Method for instantiating
this.$get = function () {
return new Greeter();
};
});

angular.module('myApp', [
'ngRoute',
'myProviderModule'
])
.config(function ($routeProvider, myProvider) { // or 'myProviderProvider'
$routeProvider
.when('/', {
templateUrl: 'views/main.html',
controller: 'MainCtrl'
})
.otherwise({
redirectTo: '/'
});
});

请参阅此 fiddle :http://jsfiddle.net/Z3k2s

关于javascript - AngularJS - 注入(inject)提供者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20881409/

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