【发布时间】:2013-10-12 22:43:48
【问题描述】:
在 Angular 1.2 中,ngRoute 是一个单独的模块,因此您可以使用其他社区路由器,例如 ui.router。
我正在编写一个开源模块,旨在为多种不同的路由器实现工作。那么如何检查哪个路由器已加载或存在呢?
我在我的模块中的工厂内执行以下操作,但它没有按我期望的方式工作:
if (angular.module("ngRoute"))
// Do ngRoute-specific stuff.
else if (angular.module("ui.router"))
// Do ui.router-specific stuff.
它会为未加载的模块引发错误。例如,如果应用使用ui.router,则ngRoute 检查会引发以下错误:
未捕获的错误:[$injector:nomod] 模块“ngRoute”不可用! 您要么拼错了模块名称,要么忘记加载它。如果 注册模块确保将依赖项指定为 第二个参数。
【问题讨论】:
-
我不知道是否有“正确”的做法,但我至少可以想到一个解决方法。你可以试试 { angular.module('ngRoute') } catch(e) { //这里你知道它不存在 } 但可能有更好的方法。
标签: angularjs angularjs-routing angularjs-module