加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

AngularJS – 如何路由到不同模块中的控制器

发布时间:2020-12-17 16:58:36 所属栏目:安全 来源:网络整理
导读:我有一个与 angularjs中的模块和路由有关的问题.要求是在一个模块中定义所有路由配置 – 让我们调用此ModuleRtr. 一旦触发了路由,它应该调用一个控制器(例如,称为TestCtr).该控制器在另一个模块中定义 – 让我们称之为ModuleCtrl. 如果我尝试这样做,我得到一
我有一个与 angularjs中的模块和路由有关的问题.要求是在一个模块中定义所有路由配置 – 让我们调用此ModuleRtr.

一旦触发了路由,它应该调用一个控制器(例如,称为TestCtr).该控制器在另一个模块中定义 – 让我们称之为ModuleCtrl.

如果我尝试这样做,我得到一个例外:

“Argument TestCtr is not a function,got undefined”

.原因是当广角$routingChangeSuccess事件时,监听器尝试访问控制器(TestCtr)作为当前模块的一部分 – ModuleRtr.因为它不存在,所以会引发错误.

如果我只是在ModuleRtr中创建TestCtr控制器(与其中的路由相同),那么一切正常.但我不希望这样,我希望将TestCtr放在不同的模块中.我也不想在ModuleCtrl模块中有路由定义.

所以,以更简单的方式,我的问题是:是否有可能在一个模块(ModuleRtr)中定义的路由调用另一个模块(ModuleCtrl)中定义的控制器?

我忘了提到的东西……我不想以任何方式绑定这两个模块.当然,这包括在模块创建期间列出依赖项.我已经尝试过动态加载TestCtr – 它没有解决问题.

场景是:您有2个angularjs应用程序(模块).他们对彼此一无所知……除了一件事 – 在共享/公共位置的某个地方,有一个跟随特定结构的对象(如合同).第一个模块在那里写入数据.然后它从第二个模块运行一个共同的功能(这实际上是我问的问题 – 如何?).然后第二个模块知道要去哪里(这是合同)要阅读什么以及做什么.我可以这样做的一种方法是在创建另一个模块时尝试动态生成表示模块依赖关系的字符串.我不确定这是否是一个很好的解决方案……

非常感谢!

解决方法

您可以为每个功能使用带有子模块的单个模块,例如:

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

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

至少,这就是我的看法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读