当我使用Ionic切换功能时,它可以正常工作。
<ion-toggle ng-model="pushNotification.checked"
ng-change="pushNotificationChange()">
添加ng-true-value和ng-false-value后,模型不会更改,或者至少不会在更改功能中更改。但它在视图中更改,正确显示绑定值。
<ion-toggle ng-model="emailNotification"
ng-true-value="'Subscribed'"
ng-false-value="'Unubscribed'"
ng-change="emailNotificationChange()">
在控制器中:
$scope.pushNotificationChange = function() {
console.log('Push Notification Change', $scope.pushNotification.checked);
};
$scope.emailNotificationChange = function() {
console.log('Email Notification Change', $scope.emailNotification);
};
以下是代码:https://codepen.io/anon/pen/jqjjZP
推送通知将日志正确切换到控制台,而时事通讯切换始终日志'已订阅'。
为什么?
答案 0 :(得分:3)
这是因为ng-model
性能双向绑定仅在绑定到可以通过引用更新的对象时。在您的情况下,$scope.pushNotification
是一个对象,这就是为什么它正常工作,而$scope.emailNotification
是一个原始值并且无法正常工作。将其更改为一个对象,即使没有更改处理程序,它也能正常工作。
<ion-toggle toggle-class="toggle-assertive"
ng-model="emailNotification.value"
ng-true-value="'Subscribed'"
ng-false-value="'Unubscribed'">
Newsletter
</ion-toggle>
$scope.emailNotification = { value: 'Subscribed' };
我已经从您的代码中创建了一个forked codepen,它按预期工作:https://codepen.io/addi90/pen/EKqaOG
答案 1 :(得分:0)
我看了你的代码,你的ng-model直接绑定到ng-true-value
和ng-false-value
。因此,当从控制器中删除$scope.emailNotification = 'Subscribed';
时,按钮仍可正常工作,但日志记录将显示未定义。
按钮在开始时没有任何值,但在切换时会得到它。