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

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检查的以下错误:

Uncaught Error: [$injector:nomod] Module ‘ngRoute’ is not available!
You either misspelled the module name or forgot to load it. If
registering a module ensure that you specify the dependencies as the
second argument.

我不知道一种检查方法,没有提出错误;但是,请注意,问题是它是一个未捕获的错误,而不是错误抛出。捕获这种错误的模式如下。
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"]);

(编辑:李大同)

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

    推荐文章
      热点阅读