簡體   English   中英

backbutton事件(cordova)不會像預期的那樣影響angularjs控制器變量

[英]backbutton event (cordova) not affecting angularjs controller variables as expected

通過嘗試將cordova.js集成到我的角度控制器中,我得到了無法預測的結果。

    <div class="side-menu" ng-class="{'show_menu' : show_menu }" ng-swipe-left="show_menu = !show_menu"> // more stuff</div>

初始代碼:

   $scope.init =function() {

        document.addEventListener("deviceready", $scope.onDeviceReady, false);
    }

   $scope.onDeviceReady = function() {

       document.addEventListener("backbutton", $scope.onBackKeyDown, false);
    }

工作:

  $scope.onBackKeyDown = function($scope) {
        alert('backbutton pressed');
    }

還工作

這將調用一個函數(與show_menu並成功更改show_menu的狀態

$scope.onBackKeyDown = function() {
    $scope.filterby('dance');
    $scope.show_menu = !$scope.show_menu;
}

不工作

完全沒有任何反應

$scope.onBackKeyDown = function() {
    $scope.show_menu = !$scope.show_menu;
}

我在控制器啟動后立即將$scope.show_menu聲明為false,因此我無法弄清楚為什么它依賴一個不相關的函數在它開始工作之前被調用。

編輯:

我發現它正在工作,但是一直等到以下angularjs事件。 例如,菜單沒有任何反應,但是如果之后單擊觸發另一個與菜單無關的事件,則菜單狀態將更改。

您可能要使用$ apply()角度事件,而addEventListener是分開的,這就是為什么有時需要使用“ $ apply()”因為它會更新角度代碼的原因。 或者,您可能希望使用工廠或服務來跟蹤事件之間傳遞的變量。 另一種選擇是,如果您想避免使用apply,請使用“ controller as語法”示例ng-controller =“ AppCtrl as app”,然后將變量附加為app.show_menu。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM