一尘不染

在角度ui路由器URL中添加可选属性

angularjs

有没有办法在ui-router中的url开头具有可选属性?如果是这样,怎么办?

我想实现以下目标:

.state('events',{
    url: '(/city:)?/events/:id'
    ...
})

因此, “城市” 将是可选的。

谢谢您的任何投入。


阅读 182

收藏
2020-07-04

共1个答案

一尘不染

有两个单独的路由指向同一状态可能是一个坏习惯,但是没有什么可以阻止您创建使用相同分辨率/控制器/模板的两个不同状态。

$stateProvider
.state('state1', {
  url: "/:city/events/:id",
  templateUrl: "partials/events.html",
  controller: eventsCtrl
})
.state('state2', {
  url: "/events/:id",
  templateUrl: "partials/events.html",
  controller: eventsCtrl
});

function eventsCtrl($scope){
  // shared controller
}

同样,这可能是不好的做法,但我想不出更好的解决方案

2020-07-04