gpt4 book ai didi

AngularJS - 如何路由到不同模块中的 Controller

转载 作者:行者123 更新时间:2023-12-02 23:49:22 26 4
gpt4 key购买 nike

我有一个与 angularjs 中的模块和路由相关的问题。要求是在一个模块中定义所有路由配置 - 让我们称之为 ModuleRtr

一旦路由被触发,它应该调用一个 Controller (例如称为TestCtr)。该 Controller 在另一个模块中定义 - 我们称之为 ModuleCtrl

如果我尝试这样做,我会遇到如下异常:

"Argument TestCtr is not a function, got undefined"

。原因是,当 Angular 广播 $routeChangeSuccess 事件时,监听器尝试访问 Controller (TestCtr)作为当前模块的一部分 - ModuleRtr 。因为它不存在,所以会引发错误。

如果我只是在 ModuleRtr 中创建 TestCtr Controller (与其中包含路由的 Controller 相同),那么一切都会正常。但我不希望这样,我希望将我的 TestCtr 放在不同的模块中。我也不想在 ModuleCtrl 模块中定义路由。

因此,以更直接的方式,我的问题是:一个模块 (ModuleRtr) 中定义的路由是否可以调用另一个模块 (ModuleCtrl) 中定义的 Controller )?

我忘记提及的事情...我不想以任何方式绑定(bind)这两个模块。这当然包括在模块创建期间列出依赖项。我已经尝试过动态加载 TestCtr - 它没有解决问题。

场景是:您有 2 个 angularjs 应用程序(模块)。他们对彼此一无所知......除了一件事 - 在共享/公共(public)位置的某个地方,有一个遵循特定结构(如契约(Contract))的对象。第一个模块在那里写入数据。然后它从第二个模块运行一个通用函数(这实际上是我要问的问题 - 如何?)。然后第二个模块已经知道要去哪里(这是一个契约(Contract))要读什么以及做什么。我可以做到这一点的一种方法是尝试在创建其他模块时动态生成表示模块依赖项的字符串。我不确定这是否是一个好的解决方案......

非常感谢!

最佳答案

您可以将单个模块与每个功能的子模块一起使用,例如:

angular.module('myApp.home',[]);
angular.module('myApp.routing',[]);
...modules here...
angular.module('myApp', [
'myApp.home',
'myApp.routing'
]);

因此,您可以从 myApp.home 发送一个方法,调用 myApp 中的中间方法,然后调用 myApp.routing 方法。

至少,我是这么认为的。

关于AngularJS - 如何路由到不同模块中的 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19640983/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com