【发布时间】:2019-01-24 00:25:00
【问题描述】:
我想在 UI 路由器中使用 parent.child 表示法继承状态/URL。我不想继承视图(或将视图嵌套在其他视图中),也不想继承控制器,我只想继承 URL。我使用 'ui.router' 作为依赖项。
这是一个路由器的例子:
$stateProvider
.state('products', {
url: '/products',
templateUrl: 'view1.html',
controller: 'products#index'
})
.state('products.show', {
url: '/:id',
templateUrl: 'view2.html',
controller: 'products#show'
})
.state('products.buy', {
url: '/:id/:moreParams',
templateUrl: 'view3.html',
controller: 'products#buy'
})
.state('products.sell', {
url: '/:id/:moreParams/:moreParams',
templateUrl: 'view4.html',
controller: 'products#sell'
});
控制器是:
angular.module('productsModule', [])
.controller('products#index', function($scope){
})
.controller('products#show', function($scope){
})
.controller('products#buy', function($scope){
})
.controller('products#sell', function($scope){
})
在这里,所有视图都是完全不同的,我不想将任何视图嵌套在任何其他视图中。另外,所有的控制器也是不同的,我不想继承控制器,它们都是分开的,功能不同。
这是我的预期结果。我想要实现的是 Angular 允许我只继承 URL,因此 URL 变为:
/products
/products/:id
/products/:id/:moreParams
/products/:id/:moreParams/:moreParams
(然后让每个 URL 都有自己的视图和控制器,如上所述)
到目前为止它不起作用,我的研究开始告诉我,这种使用 parentState.childState 的继承仅适用于您想要嵌套视图时(这是我不想要的。我只想重复使用 URL)。
我的解决方法是创建像products_show 这样的路由器 URL,也就是说,使用下划线而不是点,因此它们被视为新的独立 URL,而不是继承 URL。我不确定这是否是最好的主意,主要是因为它看起来很丑(尽管它工作得很好)。
也许我应该只使用products_show,以防它不能用点来完成?想法?
【问题讨论】:
-
我不知道 /products/:id/:moreParams /products/:id/:moreParams/:moreParams 中的 moreParams 是什么意思
-
moreParams 可以是任何东西,只是为了使 URL 不同。它可能只是 url: '/:id/different/URL',
标签: angularjs angular-ui-router