サイドメニューを使用して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'
アプリはになります状態で、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
状態のコントローラは今回はそのコードを実行しません。
私は間違っていますか?
は、私は、代わりにtemplateUrl
のtemplate
オプションを使用$state.go()
と状態の変化やリロードを強制しようとする、さまざまなソリューションを試してみた、など...しかし、それらのどれも私が期待どおりに動作するようです!
別の方法としては、状態の定義にコントローラをリロードしないapparantly –
@MuliYulzaryキャッシュを無効にすることができます:/ –
そんなにありがとう@AlexRumbaNickedを!あなたのソリューションは私のニーズを完全にカバーしました! – daniegarcia254