Ionic:如何以编程方式更新离子切换

时间:2015-11-02 01:28:05

标签: javascript angularjs ionic

这已经困扰了我多年,但我无法弄清楚如何以编程方式更改离子切换值。

我的切换按开始。当有人将其滑下时,我会弹出确认信息。如果他们取消确认,我想将切换重置回原来的位置:

<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;
                }
            });

我试过包装$ scope.twitterConnection = true;在$ apply中行,但这会给出“正在进行的摘要”错误。我试过在$ timeout中包装它,但没有任何反应。我是一个相对初学者,所以所有的帮助表示感谢,谢谢!

编辑:这是一个代码:http://codepen.io/Shiftlemac/pen/pjZRbP

3 个答案:

答案 0 :(得分: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;
    }

答案 1 :(得分:0)

由离子论坛提供答案:

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

基本上我需要使用离子切换的ng-checked属性,并根据这种绅士的代码来设置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' }

答案 2 :(得分:0)

首先更新组件的状态,如$ scope.twitterConnection = true;或$ scope.twitterConnection = false;最终运行$ scope。$ apply();完成

抱歉,我的英文不好