Я использую Ionic и, следовательно, angularjs, и я пытаюсь сохранить настройки в localStorage.ngChecked, похоже, не хочет привязываться к модели. Зачем?
У меня есть флажок, который я хочу использовать для включения или отключения аналитики. Html выглядит так.
Analytics on/off
<label class="toggle toggle-balanced">
<input type="checkbox" ng-click="toggleAnalytics()" ng-checked="analytics">
<div class="track">
<div class="handle"></div>
</div>
</label>
и в соответствующем контроллере у меня есть:
$scope.analytics = $localstorage.get('analyticsOnOff');
$log.log("Analytics initialised at", $scope.analytics);
$scope.toggleAnalytics = function(){
if($scope.analytics===true){
$scope.analytics = false;
$localstorage.set('analyticsOnOff', false);
}else{
$scope.analytics = true;
$localstorage.set('analyticsOnOff', true);
}
$log.log("Analytics is ", $scope.analytics);
}
Так как вы можете видеть, когда вы изменяете флажок в toggleAnalytics() функция переключает $ scope.analytics между истинным и ложным и обновляет localstorage, чтобы отразить это.
Обратите внимание, что я использую методы $ localstorage. $ localstorage определяется в другой службе. Это позволяет вам легко и легко устанавливать объекты localStorage.
В любом случае, моя проблема очень проста, но непонятна. Я знаю, что могу изменить значение аналитики из журналов консоли, но независимо от того, что я делаю, этот флажок инициализируется.
Любые идеи?
Почему вы не используете 'ng-model' в этом флажке? Он будет обрабатывать установку 'true' и' false' – tymeJV
'ng-checked' для« Когда у вас есть выражение как true, оно будет проверять ». Вы не устанавливаете ничего в 'analytics'. – klauskpm
@klauskpm Нет, проверьте документы: https://docs.angularjs.org/api/ng/directive/ngПроверено. – nickgraef