我試圖創建一些收件箱應用程序左側的消息列表和右側選定的消息的詳細信息,使用UI-Router來做到這一點。AngularJS UI-Router父狀態重新加載
我已經能夠解決從數據庫中的消息列表中的父狀態和子狀態從數據庫解析選定的信息(ID參數)。
問題是:當在消息之間導航(子狀態,正確改變id參數)時,父狀態也被重載(視圖,控制器...和消息列表)。我不想要它,我不明白它爲什麼會發生。
導航 - 第一溶液嘗試(父重新加載)
<a ui-sref="app.messengers.show({id: row.id})"></a>
導航 - 第二溶液嘗試(父重新加載)
// Solution 2.1
$state.go('app.messengers.show', {id: id});
// Solution 2.2
$state.transitionTo('app.messengers.show', {id: id});
嘗試還添加參數「重載:假「在這兩種解決方案(第一個解決方案的ui-sref-opts,第二個參數的第三個參數):父代重新加載。
UI-路由器
.state('app.messengers', { // parent state
abstract: true,
url: '/messenger',
templateUrl: 'app/messengers/list.html',
controller: 'MessengersController',
resolve: {
load: ['$ocLazyLoad', function ($ocLazyLoad) {
return $ocLazyLoad.load([
'app/messengers/messengerService.js',
'app/messengers/messengersController.js'
]);
}],
messages: ['load', 'MessengerService', function (load, MessengerService) {
return MessengerService.list();
}]
}
})
.state('app.messengers.show', { // child state
url: '/:id',
templateUrl: 'app/messengers/detail.html',
controller: 'MessengerDetailController',
params: {
id: null
},
resolve: {
load1: ['$ocLazyLoad', function ($ocLazyLoad) {
return $ocLazyLoad.load([
'app/messengers/messengerDetailController.js'
]);
}],
message: ['load', '$stateParams', 'MessengerService', function (load, $stateParams, MessengerService) {
var regexp = new RegExp('^\\d+$');
return (regexp.test($stateParams.id)) ? MessengerService.get($stateParams.id) : null;
}]
}
})
剛剛嘗試,沒有改變對我來說。 – Ecorce