ионное переключение с ng-true-value не меняет модель внутри контроллера

0

Когда я использую Ionic toggle с функцией on-change, он работает нормально.

<ion-toggle ng-model="pushNotification.checked"
     ng-change="pushNotificationChange()">

После добавления ng-true-value и ng-false-value модель не изменяется или, по крайней мере, не находится в функции on-change. Однако он изменяется в пределах представления, отображая привязанное значение правильно.

<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

Push Notifications корректно переключает журналы на консоль, в то время как Newsletter toggle всегда регистрирует "Subscribed".

Зачем?

Теги:
ionic-framework

2 ответа

2
Лучший ответ

Это связано с тем, что 2-сторонняя привязка 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' };

Я создал разветвленный код из вашего кода, и он работает так, как ожидалось: https://codepen.io/addi90/pen/EKqaOG

0

Хорошо, я посмотрел на ваш код, и ваша ng-модель привязывается непосредственно к ng-true-value и ng-false-value. Поэтому при удалении $scope.emailNotification = 'Subscribed'; от контроллера кнопка все еще работает, но запись в wil говорит undefined.

Кнопка не будет иметь значения в начале, но получит ее, когда вы ее переключите.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню