【发布时间】:2020-02-06 10:12:18
【问题描述】:
我的应用中有多个状态,我使用这样的 $stateProvider 定义:
.state(STATES.s1,
{
url: "/?refnr"
template: ...
})
.state(STATES.s2,
{
url: "/?details&searchID&pos"
template: ...
})
现在我想要第三种状态,我想要捕获所有包含 包含特定 url 参数的 url,其中包括感叹号。这是参数 'emp!',在 url 中看起来像这样,值为“.../?emp!=45”。 我将此定义为我的状态:
.state(STATES.s3,
{
url: "/?emp!"
template: ...
})
不起作用。它与 url 不匹配。我还尝试使用 $urlMatcherFactoryProvider 并提供已编译的匹配器作为 url,但结果相同。 我也尝试使用编码版本!在我的状态 url 定义中是这样的:
url: "/?emp%21"
还是一样的结果。
为什么会这样?我怎样才能匹配这些网址?
【问题讨论】:
-
STATE 对象包含什么? (即 STATE.s1、STATE.s2 等)。它应该是 .state( { url: "/?refnr" template: ... })
-
我认为你没有抓住重点......我的状态定义有效。我只是无法将 url 与该模式匹配。
-
好的,知道了。我试过这个fiddle。它适用于 url 的 with !标记
-
我认为这是因为与 href 链接.. 直接调用此 url 不会打开此状态.. 不幸的是,我无法在您的小提琴中进行直接 url 调用
标签: angularjs angular-ui-router