我正在尝试创建一个“MainMenuProvider”,它将在多个模块的.config()
函数之间共享。
我无耻地偷看了ui-router源代码(https://github.com/angular-ui/ui-router/tree/master/src),以了解他是如何实现这一目标的。
很明显,我的简单版本不起作用。 更糟糕的是,它在启动时给我一个js错误:
Error: [$injector:nomod] Module 'myApp.mainMenu' 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.
http://errors.angularjs.org/1.2.9/$injector/nomod?p0=myApp.mainMenu
这是我的源代码。关于可能发生什么的任何想法?
$MainMenuProvider.$inject = [];
function $MainMenuProvider() {
var items = {};
this.register = register;
function register(name, definition) {
/*jshint validthis: true */
if (isObject(name)) {
definition = name;
} else {
definition.name = name;
}
registerMenuItem(definition);
return this;
}
function registerMenuItem(definition) {
var name = definition.name;
items[name] = definition;
return definition;
}
}
angular.module('myApp.mainMenu').provider('$mainMenu', $MainMenuProvider);
编辑:由于calebboyd和dimirc都突出显示,我以不恰当的方式宣布该模块。
最后一行应为:
angular.module('myApp.mainMenu', []).provider('$mainMenu', $MainMenuProvider);
请注意,提供程序仍然无法正常工作,因为我没有实现$ get方法,但这是一个完全不同的问题:)
谢谢大家。