たとえば、ビューの変更を処理するコントローラーがあるとします。
function Controller($scope){
var viewModel = this;
viewModel.goBack= function(){
viewModel.visible = visibleLinks.pop(); //get last visible link
viewModel.swipeDirection = 'left';// for view change animation
}
}
<body>
しかし、たとえば、内部の HTML ボタンだけでなく、デバイスの [戻る] ボタンでも処理したいと考えています。したがって、次のように、イベントのイベント リスナーを追加し、AngularJS コンテキストの外部で呼び出されることをdeviceready
明示的に呼び出す必要があります。$scope.$apply()
document.addEventListener("deviceready", function(){
document.addEventListener("backbutton", function(){
viewModel.goBack();
$scope.$apply();
}, false);
}, false);
}
しかし、私は (比較的 :)) 新しい構文にも従いたいと思っていcontrollerAs
ます。これは、Todd Motto: Opinionated AngularJS styleguide for teamによって現在推奨されて$scope
いるため$emit
です$on
。$apply()
しかし、ユーザーがデバイスの戻るボタンをクリックしたときに、コンテキストがAngularコンテキストではないため、呼び出す必要がある場合はできません。Service
コードバのラッパー ファサードを作成し、このサービスに注入することを考えました$scope
が、ここで読んだように、 $scope を angular サービス function()に注入することはできません。私はこれを見ました: Angular JS & Phonegap 戻るボタン イベントと受け入れられたソリューションには$apply()
、$scope
取り外し不可。$scope
明示的に必要ないときにコントローラから削除するために、Angular コントローラの外部にある Cordova 固有のイベントを削除する解決策を知っている人はいますか? 前もって感謝します。