【问题标题】:Angularjs - how to access to one controller from other module angularjs (use typescript)Angularjs - 如何从其他模块 angularjs 访问一个控制器(使用 typescript)
【发布时间】:2019-02-12 09:18:21
【问题描述】:

// 在engagement.component.ts:

class EngagementMembersController {
         alphabetic: Array<string> = 'abcdefghijklmnopqrstuvwxyz'.split('');
         constructor() {}

 export const EngagementSetupMember: IComponentOptions = {
    controller: EngagementMembersController,
    templateUrl: 'engagementMembers.component.html'
}

//在topbar.moudel.ts:

import {EngagementSetupMember} from './../engagement.component';
export const topBarMembersModule: string = angular
.module('topbar-members', [])
.controller(EngagementSetupMember.controller)
.component('topbarMemberComponant', {
    require: {
        controller: '^EngagementMembersController'
    },
    templateUrl: 'topBarMembers.component.html'
})
.name;

但是当我使用它时,屏幕打印了一个错误:

vendor.js:36574 错误:[$compile:ctreq] 控制器 指令要求的“EngagementMembersController” 'topbarMemberComponant',找不到!

请帮忙!

【问题讨论】:

  • 您能否也发布EngagementMembersController 的代码,并向我们展示您是如何注册该控制器的(您在哪里注册.component().controller()
  • 是的,我编辑了它@HTom
  • 你能发布EngagementMembersController的实际代码吗?此外,您似乎错误地注册了该控制器。您需要为控制器提供名称和功能/类。假设EngagementSetupMember.controller 是一个函数或类,像.controller('EngagementMembersController ', EngagementSetupMember.controller) 这样的东西会更正确。
  • 我为 EngagementMembersController 编辑了代码。第二个参数只接受一个函数、对象或类型 any[]。

标签: angularjs typescript angularjs-controller angularjs-components


【解决方案1】:

我想我必须先通过另一个组件调用 EngagementMembersController 才能使用:

require: {
    controller: '^EngagementMembersController'
},

在这种情况下,我调用了 ui_router 并且它可以加载

【讨论】:

    猜你喜欢
    • 2014-11-19
    • 1970-01-01
    • 2013-04-30
    • 2020-01-18
    • 2018-06-15
    • 1970-01-01
    • 2015-07-01
    • 1970-01-01
    • 2015-06-17
    相关资源
    最近更新 更多