2016-11-29 5 views
1

В настоящее время я использую URL какСохраняя контроллер по изменению пути

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

где есть один контроллер в течение первых двух случаев и еще один в течение последних двух случаев. Каждый контроллер отображает список сущностей и необязательно (когда задан id) детали выбранного объекта.

Я хотел бы перейти к более логической схеме, как

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

без изменения контроллеров. Согласно этому comment by misko, экземпляр контроллера не сохраняется на изменениях «путь» (а не только «поиск»).

Есть ли способ избежать повторного введения контроллера?

Я использую ui-router, это поможет?

+0

Будет ли это одно состояние с необязательными параметрами или состояние с вложенным состоянием с этим параметром? –

+0

https://github.com/angular-ui/ui-router/issues/2993 –

+0

@LenilsondeCastro Не знаю, я никогда не пользовался ui-router. Я думаю, два состояния, как и мои два контроллера. Один с необязательным 'orderId', другой с обязательным' orderId' и опциональным 'itemId'. – maaartinus

ответ

0

С Ui-маршрутизатор, вы можете определить, какой контроллер используется, для которых состояние:

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' 
    }); 
}]); 

Затем в файлах шаблонов, вы можете связаться с каждого состояния (с входным идентификатором, если это необходимо):

<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> 
+0

ОК, я могу указать один и тот же контроллер для '/ order' и'/order/123', но при переходе между ними будет сохраняться экземпляр * контроллера *? – maaartinus

+0

@maaartinus Если приложение подключено правильно, да, он должен. – JLewkovich

Смежные вопросы