Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度ui路由器,如何用更新的url嵌套状态_Javascript_Angularjs_Angular Ui_Angular Ui Router - Fatal编程技术网

Javascript 角度ui路由器,如何用更新的url嵌套状态

Javascript 角度ui路由器,如何用更新的url嵌套状态,javascript,angularjs,angular-ui,angular-ui-router,Javascript,Angularjs,Angular Ui,Angular Ui Router,我想知道在运行类似向导的设置时如何将三个状态连接在一起。 我目前正在开发的应用程序有一个“参数”屏幕,要求用户分3步输入一些参数。这3个步骤应在同一页上合并,但当前步骤应仅在需要填写该特定步骤时可见 有点像这样: 用户开始于:parameters/step-1 第一个div是可见的 第二个div被隐藏(或处于某种阻塞/锁定状态) 第三个div被隐藏(或处于某种阻塞/锁定状态) 用户填写步骤1并导航到参数/step-2 第一个div是可见的 第二个div可见 第三个div被隐藏(或处于某种阻

我想知道在运行类似向导的设置时如何将三个状态连接在一起。 我目前正在开发的应用程序有一个“参数”屏幕,要求用户分3步输入一些参数。这3个步骤应在同一页上合并,但当前步骤应仅在需要填写该特定步骤时可见

有点像这样:

用户开始于:
parameters/step-1

  • 第一个div是可见的
  • 第二个div被隐藏(或处于某种阻塞/锁定状态)
  • 第三个div被隐藏(或处于某种阻塞/锁定状态)
用户填写步骤1并导航到
参数/step-2

  • 第一个div是可见的
  • 第二个div可见
  • 第三个div被隐藏(或处于某种阻塞/锁定状态)
用户填写步骤2并导航到
参数/step-3

  • 第一个div是可见的
  • 第二个div可见
  • 第三个div可见
这是我当前的设置,这是正确的方法吗?还是应该使用嵌套视图,然后根据当前管线手动显示/隐藏每个视图?如果是这样,我该怎么做

.state('test.parameters', {
  url: "/parameters",
  templateUrl: "views/partials/enter-parameters.html"
})
.state('test.parameters.step1', {
  url: "/step-1",
  templateUrl: "views/partials/step1.html"
})
.state('test.parameters.step2', {
  url: "/step-2",
  templateUrl: "views/partials/step2.html"
})
.state('test.parameters.step3', {
  url: "/step-3",
  templateUrl: "views/partials/step3.html"
})
描述您的确切示例。也有人对这篇文章发表了评论,并加了一句。我已经调整了文章中的代码以适合您的示例

要回答这里的问题,您要做的是将test.parameters设置为抽象状态,这意味着您不能直接引用它,但它会为您提供test.parameters的抽象url。一旦导航到某个抽象状态的子级(由用户或脚本中的某个部分),url将与子url一起更新为抽象状态的url(在您的示例中为[mainUrl]/parameters/test1)。每个test.parameters.step[x]状态都是抽象状态的子级,您可以使用您提到的templateUrl中标记中的sref元素在它们之间切换。我留下$urlRouterProvider是为了向您展示如何访问抽象状态的第一步

$urlRouterProvider.otherwise('/test.parameters/step1');

$stateProvider
.state('test.parameters', {
    abstract: true,
    url: '/parameters',
    templateUrl: "views/partials/enter-parameters.html"
})
.state('test.parameters.step1', {
    url: '/step1',
    templateUrl: "views/partials/step1.html"
})
.state('test.parameters.step2', {
    url: '/step2',
    templateUrl: "views/partials/step2.html"
})
.state('test.parameters.step3', {
    url: '/step3',
    templateUrl: "views/partials/step3.html"
})

您是否必须为每个步骤使用单独的视图?在我看来,你最好只使用ngShow/ngHide(或ngIf)them一个好建议,我会试试看;)感谢您的回答,但这种方法的“问题”在于它没有将3个步骤加入到一个页面(或视图)中。他们被调换了。在我的例子中,步骤2必须在步骤1完成后出现在步骤1的下面。啊,对不起,忽略了这一部分。除了潘·斯塔夫给你的小费(对你有用吗?),你还可以试试has。您将添加三个命名视图,并在每个步骤[x].html文件中使用带有sref参数的标记来填充每个连续视图。只是一个想法:)我想,在我的应用程序中,对每个具体步骤都有深入的链接不是一个好主意。所以潘·斯塔夫给的小费让人大开眼界。但我仍然对我最初问题的解决方案感兴趣。我目前的解决方案是基于这样的:好吧,为了回答你最初的问题,我创建了一个网站,向你展示了如何进行必要的状态更改,以在你链接的网站上获得效果。没有花哨的动画和变量更新,但是你可以自己添加。