【问题标题】:Reuse AngularJS Component in another Module (Dependency Injection)在另一个模块中重用 AngularJS 组件(依赖注入)
【发布时间】:2018-03-24 17:06:18
【问题描述】:

如何通过依赖注入重用一个简单的角度组件?

组件:

angular.module("navbar", []).component("nav", function() {
    console.log("component loaded");
});

我想在其他模块控制器中使用它:

angular.module('CtrlHome', ['navbar']).controller('HomeController', 
function($rootScope, $scope) {
});

最后在模板中使用

<nav></nav>

它给我一个“injector modulerr”错误。我在这里做错了什么?

【问题讨论】:

标签: javascript angularjs


【解决方案1】:

组件定义不正确。 component 注册方法接受一个字符串和一个对象作为输入。对象描述组件。所以这将是向模块注册组件的正确方法:

angular.module("navbar", []).component("nav", {
    controller: function(){
        console.log("component loaded");
    }
});

您可以包含其他几个属性来描述组件,即bindings: {}template: '&lt;div&gt;Hello, World!&lt;/div&gt;'

【讨论】:

  • 能提供jsfiddle或者sn-p吗?
  • 感谢您的快速响应,我想您不小心放了一个方括号。更改后我仍然遇到相同的错误。
  • 是的,很好。这是一个大括号 :-) 如果您仍然遇到相同的错误,那么您的 navbar 模块可能在注册 CtrlHome 之前没有使用 angular 注册。尝试检查它们是否以正确的顺序加载。
  • 只要像 angular.module('CtrlHome', ['navbar']) 一样使用模块,加载顺序无关紧要。该错误意味着模块在引导时根本没有加载。
  • 在 index.html 中注册它有很大帮助...我使用 webpack 太久了...无论如何谢谢
猜你喜欢
  • 2016-04-25
  • 2015-10-06
  • 2016-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-02
相关资源
最近更新 更多