AngularJS提供商

时间:2014-01-27 17:15:13

标签: angularjs

我正在尝试创建一个“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方法,但这是一个完全不同的问题:)

谢谢大家。

0 个答案:

没有答案