我最近開始與離子框架工作(並因此與Angular.js爲好),我跑與角UI路由器的問題:當其中一個$stateParams
發生更改時,我註冊的其中一個州不會重新初始化。起初,我認爲這是因爲國家是抽象的,有孩子,所以它從來沒有直接激活 - 但即使當我將它改爲非抽象和「最深」的國家之一時(即在看到國家一個樹結構),問題依然存在。奇怪的是,它似乎沒有發生在其他國家。
我嘗試過不同的方法並仔細閱讀文檔,但找不到問題的原因。
以下是我用來註冊狀態的代碼。國家app.festival
是我遇到的問題之一:
- 當我鏈接到
app.festival.overview
狀態的第一次,例如用URL/festival/33/overview
,在國家的控制,以及其抽象父控制器app.festival
正確初始化 - 但後來,當我回去別的地方,然後鏈接到類似
/festival/21/overview
,只是這種狀態的控制器被重新初始化,但不是它的抽象父控制器(雖爲festivalId
的參數的一部分它應該引發重新加載,我想) - this resu在其由
app.festival
狀態管理的實際節數據(由festivalId
引用)LTS保持在整個應用程序相同的,因爲基本上它只是初始化一個控制器的一個「實例」用於app.festival
不管不同$stateParams
的我需要這種結構的原因是,需要有一整個頁面(州)處理單個節日(應該由app.festival
狀態來管理)。
$stateProvider
.state('app', {
url: '',
abstract: true,
views: {
'appContent': {
templateUrl: 'views/main.html',
controller: 'MainCtrl'
}
}
})
.state('app.general', {
url: '/general',
abstract: true,
views: {
'mainContent': {
templateUrl: 'views/sections/general.html',
controller: 'GeneralCtrl'
}
}
})
.state('app.festival', {
url: '/festival/{festivalId:int}',
abstract: true,
views: {
'mainContent': {
templateUrl: 'views/sections/festival.html',
controller: 'FestivalCtrl'
}
}
})
.state('app.general.festivals', {
url: '/festivals',
views: {
'generalContent': {
templateUrl: 'views/pages/general-festivals.html',
controller: 'GeneralFestivalsCtrl'
}
}
})
.state('app.general.events', {
url: '/events',
views: {
'generalContent': {
templateUrl: 'views/pages/general-events.html',
controller: 'GeneralEventsCtrl'
}
}
})
.state('app.general.event', {
url: '/events/{eventId:int}',
views: {
'generalContent': {
templateUrl: 'views/pages/general-event.html',
controller: 'GeneralEventCtrl'
}
}
})
.state('app.festival.overview', {
url: '/overview',
views: {
'festivalContent': {
templateUrl: 'views/pages/festival-overview.html',
controller: 'FestivalOverviewCtrl'
}
}
});
.state('app.festival.guide', {
url: '/guide',
views: {
'festivalContent': {
templateUrl: 'views/pages/festival-guide.html',
controller: 'FestivalGuideCtrl'
}
}
});
這將是巨大的,如果有人可以幫助我在那裏,我已經把相當長的一段時間爲研究這個問題,但還沒有找到一個解決辦法。如果您需要更深入地瞭解代碼的特定部分,我很樂意將它發佈到此處。
可能的[如何重新運行控制器,每次你瀏覽到相應的視圖/狀態?](http://stackoverflow.com/questions/33384826/how-to-re-run-the-controller -every - 時間 - 你導航的到最對應的視圖-S) –