我有一个菜单,其中有几个链接都使用相同的ui-router状态。
它们都有不同的参数和不同的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,然后从“门样式”下拉菜单中选择左侧的链接。它第一次将您带到页面。对同一下拉列表中其他链接的后续点击将无法执行任何操作。
答案 0 :(得分:0)
如果您使用具有不同参数的相同状态,您的州将处理重新加载选项。
试试这个:
$stateProvider.state('range', rangeState, {reload: true});
答案 1 :(得分:0)
您所在州的网址看起来很可疑。通常,您可以通过以下方式使用特定匹配来定义它们:
URL: "/{type:foo|bar}"
在您的情况下,您似乎试图将“-doors”附加到该类型,以便获得“#/ foo-doors”或“#/ bar-doors”等网址。因此,在将它们传递给匹配字符串的URL之前,您需要将其附加到ranges
中的值。