带有依赖项的registerModule



我正在用MEAN.JS构建一个应用程序,我正试图使用另一个模块的控制器。我发现我可以通过依赖注入来做到这一点:

angular.module(‘MyModule’, [‘Dependency’]);
但是在MEAN.JS中创建模块的方式是:
ApplicationConfiguration.registerModule('MyModule');

我不能给registerModule传递第二个参数。那么,我该怎么做呢?我必须使用这两种方法吗?我做错了吗?


示例

我想添加一个新模型:CampaignCampaigns仅由管理员创建,但可以由"活动所有者"看到。(另一个User)。创建活动表单应该列出可用的用户,以便管理员可以选择将成为"所有者"的用户。
问题是,创建活动的形式是由CampaignsController控制,我怎么能列出Users ?我使用了另一个控制器(UsersController),这就是问题所在,它是未定义的,因为我们在Campaign模块。


编辑:

问题是grunt自动重启应用程序不正确:
我将控制器从一个模块(文件夹)移动到另一个模块(文件夹),但是grunt仍然试图从旧路径加载它,因此失败:未找到控制器。我认为问题是依赖注入,但你只需要关闭grunt (Ctrl+C)并再次运行它。问题解决了。
无论如何,感谢你的回答@gilBirman,因为它是正确的:没有必要用MEANJS注入任何东西。

mean .js通过将registerModule作为依赖项添加到主应用程序mean,使通过CC_10注册的所有模块对应用程序中的所有其他模块可用。下面是MEAN.js源代码中完成此操作的部分:

var applicationModuleName = 'mean';
....
// Add a new vertical module
var registerModule = function(moduleName) {
    // Create angular module
    angular.module(moduleName, []);
    // Add the module to the AngularJS configuration file
    angular.module(applicationModuleName).requires.push(moduleName);
};

所以你在正确的轨道上,然而它听起来像你试图注入一个控制器。然而,在angular中,控制器是不可注入的。可以注入服务工厂常量

首先创建自己的模块,例如:

angular.module('app.controllers', []) - angular module with controllers.

然后将控制器添加到该模块:

angular.module('app.controllers', [])
       .controller('dashboard.admin.account.controller', ['$scope', ($scope) { .... }]);

然后创建一个全局模块,它将绑定到你的标记:

angular.module('app', [
  'app.controllers'
  'ui.router',
  'ngAnimate'
]);

然后引导你的全局模块标记:

domReady(function () {
  angular.bootstrap(document, ['app']);
});

现在你可以使用你的控制器了

相关内容

  • 没有找到相关文章

最新更新