想象我有一個控制器,該控制器處理,例如,查看變化:如何刪除角控制器外的科爾多瓦特定事件?
function Controller($scope){
var viewModel = this;
viewModel.goBack= function(){
viewModel.visible = visibleLinks.pop(); //get last visible link
viewModel.swipeDirection = 'left';// for view change animation
}
}
但我想處理它不僅例如用HTML按鈕裏面<body>
,也與後退的設備按鈕。所以,我必須添加事件偵聽器deviceready
事件,同時也顯式調用$scope.$apply()
爲了事實上,它被稱爲AngularJS背景之外,像這樣:
document.addEventListener("deviceready", function(){
document.addEventListener("backbutton", function(){
viewModel.goBack();
$scope.$apply();
}, false);
}, false);
}
但我也想跟進(相對:) )新的controllerAs
語法,因此現在推薦,例如通過託德格言:Opinionated AngularJS styleguide for teams,它允許從$emit
或$on
不使用時,從控制器中刪除$scope
。但我無法做到這一點,我不得不打電話$apply()
導致我的上下文不是當用戶點擊設備後退按鈕時的Angular上下文。我想創建一個Service
這可能是科爾多瓦包裝外觀和注入$scope
這項服務,但正如我在這裏讀:Injecting $scope into an angular service function()這是不可能的。我看到這個:Angular JS & Phonegap back button event並且接受的解決方案還包含$apply()
這使得$scope
不可移動。任何人都知道一個解決方案來刪除角控制器外的科爾多瓦特定事件,以便在控制器不需要顯式時從控制器中刪除$scope
?先謝謝你。