我正在使用側邊菜單開發Ionic應用程序。但是國家的變化並不是我想要的。更改狀態時,角度UI路由器不執行控制器代碼
這是app.js
文件在我$stateProvider
定義我的親子關係:
.config(function($stateProvider, $urlRouterProvider) {
$stateProvider
.state('app', {
url: "/app",
abstract: true,
templateUrl: "templates/menu.html",
controller: 'AppCtrl'
})
.state('app.home', {
url: "/home",
views: {
'menuContent':{
templateUrl: "templates/home.html",
controller: 'AppCtrl'
}
}
})
.state('app.map', {
url: "/map",
views: {
'menuContent':{
templateUrl: "templates/map.html",
controller: 'MapCtrl'
}
}
});
$urlRouterProvider.otherwise('/app/home');
});
這些都是要遵循的步驟:
當我點擊在限定的區域元素home.html
模板:
<area id="ImgMap" shape="poly" coords="456,326,521,69,274,10,259,91,290,216,388,326"
ng-click="loadMap(0)" ui-sref="app.mapa" ui-sref-opts="{ reload: true }" title="Map" alt="Map"/>
//I've also tried with href='#/app/map'
該應用轉到app.map
狀態,加載map.html
模板並正確執行MapCtrl
控制器代碼。
然後,如果我回到home.html
頁面通過側菜單(代碼如下):
<ion-side-menus>
<ion-pane ion-side-menu-content>
<ion-nav-bar class="bar-positive nav-title-slide-ios7">
</ion-nav-bar>
<ion-nav-view name="menuContent" animation="slide-left-right"></ion-nav-view>
</ion-pane>
<ion-side-menu side="left" >
<ion-content class="mymenu">
<div id="menu-list">
<ion-list class="list">
<ion-item item-type="item-icon-left" nav-clear menu-close href="#/app/home">
<i class="icon ion-home"></i><span>Home</span>
</ion-item>
</ion-list>
</div>
</ion-content>
</ion-side-menu>
</ion-side-menus>
我在home.html
頁面定義的區域元素再次點擊,就像第一次。只是這次它正確導航到map
頁面,但控制器MapCtrl
不執行其代碼,因此如果需要,我無法重新加載地圖信息。
所以,在恢復。從我的home
狀態,我轉到map
狀態,並且一切都正確執行。但是如果我回到home
狀態並重復該過程,則此時map
狀態的控制器不會執行其代碼。
我在做什麼錯?
我已經想盡了各種辦法,試圖用template
選項,而不是templateUrl
,受力狀態的變化和重裝與$state.go()
,等...但他們都不似乎如我所料工作!
另外,您可以在狀態定義禁用緩存 –
@MuliYulzary apparantly不重新加載控制器:/ –
@AlexRumbaNicked太感謝你了!您的解決方案完全滿足我的需求 – daniegarcia254