在ui中,路由器用不同的参数链接到相同的状态don'Don’我什么都不做

In ui-router links to the same state with different params don't do anything

本文关键字:Don don 什么 路由器 ui 参数 链接 状态      更新时间:2023-09-26

我有一个菜单,它有几个链接,所有链接都使用相同的ui路由器状态。

因此,它们都有不同的参数和不同的URL。

在不同的状态下单击时,所有这些链接都可以工作。

一旦你点击一个并进入"范围"状态,但现在没有任何链接起作用。

HTML:

<a ui-sref="range({type: 'foo'})" class="dropdown-item text">
    Product Foo
</a>
<a ui-sref="range({type: 'bar'})" class="dropdown-item text">
    Product Bar
</a>

状态定义:

var _range = [ 'foo', 'bar' ];
  module.config([ '$stateProvider', function($stateProvider) {
    var rangeState = {
      parent: 'layout',
      url: '/{type:' + _range.join('|') + '}-doors',
      data: {
        range: _range
      },
      views: {
        'main@': {
          templateUrl: 'doors/range/range.html',
          controller: 'rangeController'
        }
      },
      resolve: {
        range: [ '$stateParams', 'rangeResource', function($stateParams, rangeResource) {
          return rangeResource.query({ range: $stateParams.type }).then(function(range) {
            range.name = $stateParams.type;
            return range;
          });
        }]
      }
    };
    $stateProvider.state('range', rangeState);
  }]);

有人能帮我弄清楚这不起作用吗?

要查看此操作,请转到https://uat.yaledoor.co.uk从"门样式"下拉菜单中选择左侧的链接。第一次它会把你带到页面。随后单击同一下拉列表中的其他链接将无法执行任何操作。

如果您使用不同参数的相同状态,则您的状态将在重载选项上工作。

试试这个:

$stateProvider.state('range', rangeState, {reload: true});

您的状态URL看起来可疑。一般来说,您可以通过以下方式用特定匹配来定义它们:

URL: "/{type:foo|bar}"

在您的情况下,看起来您正试图将"-doors"附加到类型中,以便获得类似"#/foo-doors"或"#/bar-doors"的URL。因此,在将其传递给URL匹配字符串之前,您需要将其附加到ranges中的值中。