离子 - AngularJS:离子切换不会更新模型

时间:2015-04-22 07:36:09

标签: javascript angularjs ionic

我对Ionic框架中的ion-toggle指令有一个奇怪的问题。

使用这样的离子切换时:

<ion-toggle ng-model="testToggle">Test toggle</ion-toggle>

JS:

$scope.$watch('testToggle',function(value) {
    console.log('testToggle changed to '+value);
})

控制器根本没有收到任何更新。

这里是CodePen: http://codepen.io/anon/pen/jPOMqz

您会看到我添加了一个$ interval,将绑定变量更改为随机,以便看到其他所有内容都按预期工作

非常感谢:)

2 个答案:

答案 0 :(得分:13)

我使用ng-change来检测更改;我在改变时调用函数toggleChange()。因此,您的ion-toggle将如下所示:

<ion-toggle ng-model="value" ng-change="toggleChange()">Test toggle</ion-toggle>

您的控制器将更改$scope.value,因此您将从$scope.value获得切换值:

.controller('ContactCtrl', function($scope, $interval) {
            $scope.value = false;
            console.log('ContactCtrl started');

            $scope.toggleChange = function() {
                if ($scope.value == false) {
                    $scope.value = true;
                } else
                    $scope.value = false;
                console.log('testToggle changed to ' + $scope.value);
            };
        }

这是Codepen的相同内容:http://codepen.io/keval5531/pen/LVYROp

答案 1 :(得分:0)

Keval的回答对我不起作用,因为他重置模型的值,将切换按钮置于其原始位置。所以正确的答案是创建一个如下所示的切换。

<ion-toggle ng-model=value ng-change="toggleChange()">Test toggle</ion-toggle>

然后按如下方式编写控制器。

.controller('ContactCtrl', function($scope, $interval) {
        $scope.value = false;

        $scope.toggleChange = function() {
            console.log('testToggle changed to ' + $scope.value);
        };
    }