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

angularjs ui-router默认子状态和ui-sref

裘禄
2023-03-14
问题内容

我的ui路由器状态提供程序中具有以下状态:

$urlRouterProvider.when('/parent', '/parent/child');
$stateProvider.state('parent', {
     url: "/parent",
     abstract: true
});

$stateProvider.state('parent.child', {
     url: "/child"
});

这遵循具有默认子状态的最佳做法,如ui-router文档中此处所述。

但是,当我现在在文档中的某处引用父级的链接时,ui-sref例如,<a ui- sref="parent">Link</a>我总是收到一条错误消息,说我无法转换为抽象状态。当我在地址栏中手动输入URL并按Enter时,一切正常。

相关Plunker:http
://plnkr.co/edit/d3Z0tOwC3VCTPqGiB0df?p=preview

如何ui-sref与默认子状态结合使用?


问题答案:

抽象状态不能直接作为目标。它们主要作为建立子状态的基础。它与URL配合正常的唯一原因是/ parent被.when捕获

这意味着当您使用

<a ui-sref="parent.child">

父级内部的子级将被加载,这意味着父级将作为其周围的图层加载。

因此,永远不要针对抽象状态本身。就像在门框内放一扇门一样。您只能打开门并与之互动(子),而不能直接与框架(父)互动。但是,当您与门互动时,门和框架是要加载的系统的一部分。

您可以给孩子一个空的URL,这样它就不会在父状态URL上附加任何内容,然后将被加载。

请参阅此处以获取更多信息:https : //github.com/angular-ui/ui-
router/wiki/Nested-States-%26-Nested-Views#abstract-
states



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

  • 问题内容: 在我正在开发的一个有角度的应用程序中,我希望有一个抽象的父状态,该状态必须解析其所有子状态的某些依赖关系。具体来说,我希望所有要求经过身份验证的用户的状态都必须从某些authroot状态继承该依赖项。 我遇到了无法始终解决父依赖关系的问题。理想情况下,我想让父状态检查用户是否仍自动登录到任何子状态。在文档中,它说 子状态将从父状态继承已解析的依赖项,并可以将其覆盖。 我发现仅当我从父级

  • 问题内容: 假设我有以下3个Angular UI Router状态: 如果直接转换为,我该如何告诉Angular UI Router进入状态? 理想情况下,我想要的是这样的: 然后,在我的代码中,我希望$ state.go(’adminCompanies’)等同于$ state.go(’adminCompanies.list’) 问题答案: 由于您的应用程序当前已设置,因此您不需要任何明确的逻辑。

  • 问题内容: 您好,我是angularJS的新手,并一直在尝试阻止根据用户critera访问某些状态。 这是从ui-router的FAQ中准确描述的,但是我无法使其正常工作。我需要什么,但要在数据对象中准确地完成此操作? (我看到有人在某些博客文章教程中投入“ true”,并像我一样使用它,但这似乎不起作用,因为我收到一条错误消息,指出needAdmin未定义) 这是我的代码: 问题答案: 如果状态

  • 本文向大家介绍angular-ui-router 将数据解析为状态,包括了angular-ui-router 将数据解析为状态的使用技巧和注意事项,需要的朋友参考一下 示例 您可以resolve在转换到状态时将数据转换为状态,通常在状态需要使用该数据或在某些提供的输入需要进行身份验证时解析为状态时非常有用。 定义状态时,您需要提供要解析到.resolve属性中的值的映射,每个解析后的值都应具有一个

  • 本文向大家介绍angular-ui-router 重新加载当前状态,包括了angular-ui-router 重新加载当前状态的使用技巧和注意事项,需要的朋友参考一下 示例 您可以使用$state.reload控制器中的方法重新加载当前状态 这是的简写(摘自官方文档的代码) 在您的状态上运行重载也会重新启动控制器并重新解析所有已解析的值。