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

AngularJS的ui-router中没有URL的状态的参数

叶恩
2023-03-14
问题内容

我正在使用ui-router来表示AngularJS应用程序中的状态。在其中,我想更改状态而不更改URL(基本上是“详细视图”已更新,但这不会影响URL)。

我使用的<a ui-sref="item.detail({id: item.id})">显示细节,但如果我指定像一个URL这仅适用url: "/detail-:id"于我$stateProvider

在我看来,当前状态仅通过URL定义。


问题答案:

感谢您的回答,它确实对正确的方向有所帮助,但是我想添加更完整的描述。

在我的特定问题中,有一个复杂的因素,因为我需要向其注入非URL参数的状态是子状态。那使事情有些复杂。

params: ['id']部分在$stateProvider声明中如下所示:

$stateProvider.state('parent', {
    url: '/:parentParam',
    templateUrl: '...',
    controller: '...'
}).
state('parent.child', {
    params: ['parentParam','childParam'],
    templateUrl: '...',
    controller: '...'
});

参数名称按如下方式连接到ui-sref属性:

<a ui-sref=".child({ childParam: 'foo' })">

收获是:

如果父州也有URL参数,则子级 也 需要 在其params数组中声明。在上面的示例中,“ parentParam”必须包含在子状态中。

如果您不这样做,则在初始化应用程序时将引发模块错误。至少在撰写本文时(v.0.2.10)的最新版本中是如此。

编辑

@gulsahkandemir指出

状态定义中的参数声明已从参数:[‘id’]更改为参数:{id:{}}

从变更日志来看,从v0.2.11开始似乎是这种情况

参数的详细信息可以在官方文档中找到



 类似资料:
  • 问题内容: 我希望能够在不更改状态的情况下更改地址的URL,以防止重新呈现。从我的搜索来看,当前没有提供此功能,但从丑角提供了。 因此,自然而然地,我想使用该州的URL,这样就不必手动键入URL。 我有两个问题: 仅返回相对路径。如何获得绝对路径? 它还返回状态的定义,参数未定义。如何获得带有参数的URL? 举例来说,如果我有一个名为状态有,我有我的状态定义为 因此,现在返回。如何获得完整的URL

  • 问题内容: 我的应用程序的登录页面有两种状态:,。现在,我想在同一URL上显示这两种状态,但让控制器和模板取决于用户会话(用户是否登录?)。 有没有办法做到这一点? 问题答案: 您可以有一个基本状态来控制要加载的状态,并且可以简单地让声明该基本状态的子级没有url: 现在,在基本状态()的控制器中,您可以检查用户是否已登录,并用于加载适当的状态。 编辑 如所承诺的那样,正在努力工作。

  • 问题内容: 我面临着在两个状态之间传递数据而不暴露url中数据的问题,就像用户不能真正直接进入此状态一样。 例如。我有两个状态“ A”和“ B”。我正在状态“ A”进行一些服务器调用,并将调用的响应传递到状态“ B”。服务器调用的响应是一个字符串消息,该消息很长,因此我无法在url中公开它。 那么,有角度的ui路由器中有什么方法可以在不使用url参数的情况下在状态之间传递数据吗? 问题答案: 我们

  • 问题内容: 我的ui路由器状态提供程序中具有以下状态: 这遵循具有默认子状态的最佳做法,如ui-router文档中此处所述。 但是,当我现在在文档中的某处引用父级的链接时,例如,我总是收到一条错误消息,说我无法转换为抽象状态。当我在地址栏中手动输入URL并按Enter时,一切正常。 相关Plunker:http ://plnkr.co/edit/d3Z0tOwC3VCTPqGiB0df?p=pre

  • 问题内容: 我正在创建一个基于标签的页面,其中显示了一些数据。我在AngularJs中使用UI-Router来注册状态。 我的目标是在页面加载时打开一个默认选项卡。每个选项卡都有子选项卡,并且我想在更改选项卡时打开默认的子选项卡。 我正在使用函数进行测试,并且正在使用内部,但是由于循环效应问题(在state.go上对其子状态调用其父状态,依此类推,然后变成循环),它似乎无法正常工作。 在这里,我创

  • 问题内容: 在不使用服务或在父控制器中构造观察器的情况下,如何使子状态访问主控制器的。 我无法在子状态下访问mainController范围-而是正在获取该范围的另一个实例- 不是我想要的。我觉得我缺少一些简单的东西。在状态对象中有一个共享的数据配置选项,但是我不确定是否应该将其用于这样的事情。 问题答案: 我创建了工作的插件,展示了如何使用和UI- Router。 状态定义未更改: 但是每个状态