我对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,将绑定变量更改为随机,以便看到其他所有内容都按预期工作
非常感谢:)
答案 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);
};
}