【问题标题】:Ionic: how to programmatically update ion-toggle离子:如何以编程方式更新离子切换
【发布时间】:2015-11-02 01:28:04
【问题描述】:

这一直困扰着我多年,但我不知道如何以编程方式更改离子切换值。

我的切换开始时打开。当有人把它滑下来时,我会弹出一个确认。如果他们取消确认,我想将切换重置回原来的位置:

<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

【问题讨论】:

  • twitterConnectionChange() 函数中有什么?
  • $ionicPopup.confirm(...) 逻辑
  • 你能提供你的代码的 jsfiddle 吗?

标签: javascript angularjs ionic


【解决方案1】:

我建议你做的事情如下:

创建函数,该函数将负责改变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;
                    $scope.twitterConnectionToggleOn();
                }
                else {
                    $scope.twitterConnectionToggleOff();
                }
            });

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

【讨论】:

    【解决方案2】:

    回答由 ionic 论坛提供:

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

    基本上我需要使用 ion-toggle 的 ng-checked 属性并将 twitterConnection 变量设置为按照这种绅士的 codepen 的对象: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' }
    

    【讨论】:

      【解决方案3】:

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

      对不起我的英语不好

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-03-13
        • 2019-11-24
        • 2018-04-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-03
        • 1970-01-01
        相关资源
        最近更新 更多