保留路径变更的控制器



当前,我正在使用url like

/order
/order?id=123
/orderitem/123
/orderitem/123/id=456

如果前两个情况有一个控制器,而在最后两个情况下有另一个控制器。每个控制器显示一个实体列表,并(当给出了id时)的详细信息。

我想切换到更逻辑的模式,例如

/order
/order/123
/order/123/item
/order/123/item/456

无需更改控制器。根据Misko的这一评论,控制器实例没有在"路径"(而不是仅仅是"搜索")上保存。

有没有办法避免重新构造控制器?

我没有使用UI-Router,它会有所帮助吗?

使用UI-Router,您可以定义哪个控制器用于哪个状态:

var myApp = angular.module('app', ['ui.router']);
myApp.config(['$stateProvider', function ($stateProvider) {
    $stateProvider.state('order', {
        url: '/order/:orderId',
        controller: 'OrderCtrl',
        templateUrl: 'orders.html'
    }).state('order.item', {
        url: '/item/:itemId',
        templateUrl: 'items.html',
        controller: 'ItemsCtrl'
    });
}]);

然后,在模板文件中,您可以链接到每个状态(如果需要,则使用输入ID):

<a ui-sref="order">/order</a>
<a ui-sref="order({id:1})">/order/1</a>
<a ui-sref="order({id:1}).item">/order/1/item</a>
<a ui-sref="order({id:1}).item({id:1})">/order/1/item/1</a>

最新更新