7

親抽象状態と子状態で構成される 2 つのネストされた状態があります。

.state('app.heatingControllerDetails', {
                url: "/clients/:clientId/heatingControllers/:heatingControllerId",
                abstract: true,
                views: {
                    'menuContent': {
                        templateUrl: "templates/heatingController.html",
                        controller: 'HCDetailsCtrl'
                    }
                }
            })
.state('app.heatingControllerDetails.wdc', {
                url: "/wdc",
                views: {
                    'hc-details': {
                        templateUrl: "templates/heatingControllers/wdc.html",
                        controller: 'WdcDetailsCtrl'
                    }
                },
                resolve:{
                    hcFamily: [function(){
                        return 'wdc';
                    }]
                }
            })

2 つのコントローラーは次のとおりです。

   .controller('HCDetailsCtrl',function($scope){
        $scope.$on("$ionicView.enter", function (scopes, states) {
        ...
        });
     })
    .controller('WdcDetailsCtrl',function($scope){
        $scope.$on("$ionicView.enter", function (scopes, states) {
        ...
        });
     })

状態 app.heatingControllerDetails.wdc を呼び出すと、両方のコントローラーが作成されますが、$ionicView.enter は親コントローラーでのみ呼び出されます。何か案が?

HeatingController.html では、hc-details ビューは次のように定義されています。

<ion-content class="has-header" ng-show="hc">
    <div ui-view name="hc-details"></div>
    <div class="disableContentDiv" ng-hide="hc.state=='Online'"></div>
</ion-content>
4

2 に答える 2

0

私はこれを回避する方法を見つけました。これをビューの親に配置するか、アプリケーションの実行時に読み込まれる最初のコントローラーに配置します。これを使用して、「to および from」ビューの変更を観察できます。toState エミュレートされた ionicView.enter の URL で文字列比較を行うだけで、必要なものを十分に達成できました。これを行うには、UI-router を使用する必要があることに注意してください。お役に立てれば!

$rootScope.$on('$stateChangeStart', 
    function(event, toState, toParams, fromState, fromParams, options){ 
        if(toState.url == "/video/:Id"){
            console.log("Leaving the view.");
        }
    });
于 2016-12-19T21:34:37.743 に答える
0

ネストされたビューを操作するときは、$ionicNavView代わりにイベントを使用する必要があります$ionicView

そうは言っても、最後のリリースではこれらのイベントにバグがあり、現在修正に取り組んでいます: Github issue

于 2015-08-19T07:05:57.780 に答える