$ stateProviderを使用したAngularJS / Ionicルーティング-状態が2回呼び出されたときに、コントローラーがリロードしていません

ウィル・ハリス

元の質問

Ionic FrameworkとAngularJSを使用してモバイルアプリを開発していますが、初期化されたコントローラーがリロードされないという問題があります。

(からの状態遷移の一つ'app.postbox-details'には'app.audit-questions')にパラメータを渡す必要があり'app.audit-questions'、コントローラが、それがリロードされていないため、このコントローラは、新しいパラメータで自身を更新しません。

コード例

app.jsファイル-config

angular.module('sf-maintenance', ['ionic', 'starter.controllers', 'starter.services', 'ngCordova'])           
.config(function ($stateProvider, $urlRouterProvider, $httpProvider) {
    $stateProvider
       .state('home', {
           url: '/home',
           templateUrl: 'templates/home.html',
           controller: 'HomeCtrl',
       })
       .state('app', { //app state being the side-menu
           url: '/app',
           abstract: true, //means that this state will never be activated directly, users will always go to a child state instead.
           templateUrl: 'templates/side-menu.html',
           controller: 'MenuCtrl'
       })       
       .state('app.postbox-details', {
           url: '/postbox-details',
           views: {
               'menuContent': {
                   templateUrl: 'templates/postbox-details.html',
                   controller: 'PostboxDetailsCtrl'
               }
           }
       })
    .state('app.audit-questions', {
        url: '/audit-questions/:postboxGuid',
        views: {
            'menuContent': {
                templateUrl: 'templates/audit-questions.html',
                controller: 'AuditCtrl'
            }
        }
    })
    $urlRouterProvider.otherwise('/home');
});

controller.jsファイル(関係のないコードは省略)

angular.module('starter.controllers', [])    
.controller('HomeCtrl', function ($scope) {
})    
.controller('MenuCtrl', function ($scope) {
})    
.controller('PostboxDetailsCtrl', function ($scope, $ionicLoading, $ionicPopup, $cordovaBarcodeScanner, $state, DataService) {

    $scope.postboxGuid = DataService.getNewGUID();
    //Rest of the controller functions are below
})    
.controller('AuditCtrl', function ($scope, $ionicSlideBoxDelegate, $stateParams, DataService) {

    $scope.auditDetails = {
        postboxGuid: $stateParams.postboxGuid
    };    
});

表示-ナビゲーションコード

ナビゲーションを実行するためのビューコードはすべて<a>タグを使用します。

  • ホームビューからポストボックス詳細ビューへ: <a class="button button-block button-dark icon-right ion-chevron-right" href="#/app/postbox-details">New inspection</a>
  • postbox-detailsビューからaudit-questionsビューへ: <a class="button button-block button-dark icon-right ion-chevron-right" ng-click="saveFormData()" ng-href="#/app/audit-questions/{{postboxGuid}}">New audit</a>

それで、誰かがそれが初期化されたらコントローラーをリロードさせる方法を知っていますか、または私がこの問題について間違った方法で起こっているなら、あなたは私をうまくいく方法に導くことができますか?


更新された情報

最近、関連する質問を確認しました。@RadimKöhlerの回答は、この質問の回答を示しておりcache:false、パフォーマンスのためにビューで使用するのが適切でない理由についての適切な情報を提供します

状況によっては、Ionicの組み込みビューライフサイクルイベントの1つを使用して、ビューのキャッシュを無効にすることなくコードを実行することで、パフォーマンスの面でメリットが得られる可能性があるため、これを共有すると思いました

トクサス

ビューは、ionicに標準でキャッシュされます。キャッシュは、ビューまたはステートプロバイダーで構成できます。

http://ionicframework.com/docs/api/directive/ionNavView/

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ