angularjs – 如何检查模块的存在,没有错误被提出?
发布时间:2020-12-17 08:43:56 所属栏目:安全 来源:网络整理
导读:在Angular 1.2中,ngRoute是一个单独的模块,因此您可以使用其他社区路由器,如ui.router。 我编写一个开源模块,旨在为多个不同的路由器实现工作。那么如何检查加载或存在哪个路由器? 我在我的模块中的一个工厂里做以下,但它不工作,我期望它的方式: if
在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检查的以下错误:
我不知道一种检查方法,没有提出错误;但是,请注意,问题是它是一个未捕获的错误,而不是错误抛出。捕获这种错误的模式如下。
try { angular.module("ngRoute") } catch(err) { /* failed to require */ } 如果捕获到错误,您可以尝试其他模块,如果没有,您可以使用第一个。 如果你的行为对于每个模块是一样的,你可以做一些类似下面的事情,我们定义一个函数,它将尝试第一个列出的模块名称,如果抛出一个错误,请尝试下一个选项。 var tryModules = function(names) { // accepts a list of module names and // attempts to load them,in order. // if no options remain,throw an error. if( names.length == 0 ) { throw new Error("None of the modules could be loaded."); } // attempt to load the module into m var m; try { m = angular.module(names[0]) } catch(err) { m = null; } // if it could not be loaded,try the rest of // the options. if it was,return it. if( m == null ) return tryModules(names.slice(1)); else return m; }; tryModules(["ngRoute","ui.router"]); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |