当前位置: 首页 > 面试题库 >

将URL与AngularJS UI路由器中的单词数组列表匹配

关翰
2023-03-14
问题内容

使用AngularJS + ui-router,我需要将URL与单词列表匹配:

但是,我使用正则表达式尝试使用一个或两个单词,但它确实有效

 url: '/{source:(?:John|Paul)}/:id'

但是我需要将我的网址与单词列表进行匹配。

例如:var sourceList = [‘John’,’Paul’,’George’,’Ringo’]; 网址:“ / {source :( ??
sourceList)} /:id”

有没有办法将我的网址与数组的匹配列表进行比较?


问题答案:

无法完全确定您要搜索的内容是什么,因为它可能是动态网址匹配器,也可能只是智能正则表达式。这是一个有工作实例的小伙子。它实际上是1)只有建立从名字......
2)所示的传递的列表正则表达式urlMatcher在行动

答案是:使用UrlMatcher

[$ urlMatcherFactory和UrlMatchers](https://github.com/angular-ui/ui-

router/wiki/URL-Routing#urlmatcherfactory-and-urlmatchers)

定义URL模式和参数占位符的语法。$
urlRouterProvider在后台使用此工厂服务来缓存编译的UrlMatcher对象,而不必在每次位置更改时重新解析url模式。大多数用户不需要直接使用$
urlMatcherFactory,但是制作UrlMatcher对象并将其作为url传递给状态配置可能很有用。

例:

var urlMatcher = $urlMatcherFactory.compile("/home/:id?param1");
$stateProvider.state('myState', {
    url: urlMatcher 
});

plunker中的示例:

  var sourceList= ['John', 'Paul', 'George', 'Ringo']
  var names = sourceList.join('|');
  var urlMatcher = $urlMatcherFactory.compile("/{source:(?:" + names + ")}/:id");

  $stateProviderRef 
    .state('names', { 
      url: urlMatcher,
      templateUrl: 'tpl.root.html',
      controller: 'MyCtrl'
    });

该示例显示了更复杂的解决方案。如果在cofnig阶段确实有名称列表,则简单的连接应该起作用。但是,如果稍后可.run()通过($http
)使用该解决方案,则此解决方案可能会有所帮助



 类似资料:
  • 仅支持 pathInfo 模式的 URL,且与控制器名称(方法)保持一致,控制器搜索规则为优先完整匹配模式。 路由规则 内置路由支持无限层级的路由,即Controller可以无限嵌套目录,如: http://127.0.0.1:9501/api/auth/login 执行的方法为:AppControllerApiAuth::login() http://127.0.0.1:9501/a/b/c/d

  • 上一篇文章我们说到路由的正则编译,正则编译的目的就是和请求的 url 来匹配,只有匹配上的路由才是我们真正想要的,此外也会通过正则匹配来获取路由的参数。 路由的匹配 路由进行正则编译后,就要与请求 request 来进行正则匹配,并且进行一些验证,例如 UriValidator、MethodValidator、SchemeValidator、HostValidator。 class RouteCo

  • 问题内容: 我想搜索包含许多单词的字符串,并检索与其中任何一个匹配的文档。我的索引方法如下: 这是我的搜索方法。我不想寻找特定的词组,但是其中的任何单词。用于搜索的分析器与用于索引的分析器相同。 我是Lucene的新手。有人可以帮我吗? 问题答案: 使用会精确地尝试将短语“单词列表”与短语坡度0匹配。 如果要匹配单词列表中的 任何 术语,可以使用: 或者,您也可以使用,以便您可以要求查询词的数量的

  • Tango支持4种形式的路由匹配规则 静态路由 tg.Get("/", new(Action)) tg.Get("/static", new(Action))匹配 URL:/ 到 Action结构体的Get函数 匹配 URL:/static 到 Action结构体的Get函数 命名路由 tg.Get("/:name", new(Action)) tg.Get("/(:name)", new(Act

  • 大家好,我不知道发生了什么事。我有以下路线: 只有路径为“/”的路由和路径为“/patient/:id”的路由才有效,其他3条路由只是没有显示与路径对应的组件。 这就是我进入路线的方式。我有一个标题组件,上面有正确的链接。见下文 在头组件中,我从'react router dom'导入{Link};在我声明路由的文件中,我从'react router dom'导入{BrowserRouter,Ro

  • 问题内容: 给定一个像这样的字典: 如何创建一个字典列表,该列表结合了第一个字典键的各种值?我想要的是: 问题答案: 我认为您想要笛卡尔积,而不是排列,在这种情况下可以提供帮助: