2015-11-02 72 views
2

這一直在擾亂我的年齡,但我無法弄清楚如何以編程方式更改離子切換值。離子:如何以編程方式更新離子切換

我的切換開始。當有人將其滑下時,我彈出一個確認。如果他們取消了確認,我想切換重置回其原來的位置:我已經試過包裹$ scope.twitterConnection =真

<ion-toggle ng-model="twitterConnection" ng-change="twitterConnectionChange()">Twitter</ion-toggle> 

$ionicPopup.confirm({ 
       title: 'Are you sure?', 
       template: 'Are you sure you want to disconnect this account?' 
      }).then(function(res) { 
       if(res) { 
        delete $window.localStorage.twitterToken; 
        delete $rootScope.user.twitterID; 
       } 
       else { 
        $scope.twitterConnection = true; 
       } 
      }); 

;在$ apply的行,但是給出了「摘要已經在進行中」的錯誤。我試過用$ timeout封裝它,但沒有任何反應。我是一個相對初學者,所有的幫助表示感謝!

編輯:這裏是一個codepen:http://codepen.io/Shiftlemac/pen/pjZRbP

+0

你的'twitterConnectionChange()'函數是什麼? – Griffith

+0

$ ionicPopup.confirm(...)邏輯 – Shiftlemac

+0

你能提供一個你的代碼jsfiddle嗎? – uksz

回答

0

回答禮貌:

http://forum.ionicframework.com/t/programmatic-updating-of-ion-toggle-not-working/36155/2?u=shiftlemac

基本上我需要使用ng-checked屬性的離子切換並設置twitterConnection變量Ë作爲對象按照這種紳士的codepen:在你的組件,如$ scope.twitterConnection =真http://codepen.io/DaDanny/pen/xwJdLr

<ion-toggle ng-model="twitterConnection.checked" ng-change="twitterConnectionChange()" ng-checked="twitterConnection.checked">Twitter</ion-toggle> 

$scope.twitterConnection = { 
    checked: true, 
    text: 'Twitter' } 
0

我建議你做的,如下:

創建功能,這將是負責更改切換的價值。

所以,你的情況將是:

$ionicPopup.confirm({ 
       title: 'Are you sure?', 
       template: 'Are you sure you want to disconnect this account?' 
      }).then(function(res) { 
       if(res) { 
        delete $window.localStorage.twitterToken; 
        delete $rootScope.user.twitterID; 
        $scope.twitterConnectionToggleOn(); 
       } 
       else { 
        $scope.twitterConnectionToggleOff(); 
       } 
      }); 

和離子論壇

$scope.twitterConnectionToggleOff = function(){ 
     $scope.twitterConnection = false; 
    } 
    $scope.twitterConnectionToggleOn = function(){ 
     $scope.twitterConnection = true; 
    } 
+0

剛剛嘗試過 - 它不起作用,不幸的是, – Shiftlemac

0

第一次更新狀態;或$ scope.twitterConnection = false;最後運行$ scope。$ apply(); finish

對不起我的英文不好