【发布时间】:2018-05-08 15:05:47
【问题描述】:
我已经定义了我的 ion-toggle,并为它设置了 2 个属性,如下所示:
<ion-toggle [checked]="storageStatus" (ionChange)="updateItem()"></ion-toggle>
一切正常,我可以切换和更改 localStorage 的值等等。但我不确定为什么切换按钮会回到关闭状态(或错误状态)。当我移动到另一个页面并返回时。
只有“视觉”显示的切换按钮会下降到关闭状态,而不是值。我希望按钮在切换时处于我在 localStorage 中设置的状态。
toggle 值正确,绑定值也正确。
storageStatus: any;
updateItem(){
this.storageStatus = !this.storageStatus;
window.localStorage.setItem('item', this.storageStatus);
}
完整代码 - 更新
以下解决方案现在对我有用。我不确定这是否是一个好方法。
app.component.ts(当应用加载 setItem 为 true 时)
ngOnInit() {
window.localStorage.setItem('item', 'true');
}
打字稿文件
import { Component} from '@angular/core';
import { NavController, NavParams, ToastController } from 'ionic-angular';
@Component({
selector: 'page-settings',
templateUrl: 'settings.html',
})
export class SettingsPage{
constructor(public navCtrl: NavController, public navParams: NavParams, private toastCtrl: ToastController) {
}
//THIS IS THE LINE THAT DID THE TRICK OF SHOWING ION-TOGGLE AS PER item value
storageStatus: string = window.localStorage.getItem('item');
updateItem(){
window.localStorage.setItem('item', this.storageStatus);
this.presentToast();
}
presentToast() {
console.log("present Toast");
const toast = this.toastCtrl.create({
message: 'New Changes Updated',
duration: 3000,
position: 'bottom'
});
toast.onDidDismiss(() => {
console.log('Dismissed toast');
});
toast.present();
}
}
html 文件
<ion-content padding>
<ion-item-group>
<ion-item>
<ion-label>Item Status</ion-label>
<ion-toggle [(ngModel)]="storageStatus"></ion-toggle>
</ion-item>
</ion-item-group>
<button ion-button block color="light" (click)="updateItem()">Save Changes</button>
</ion-content>
【问题讨论】:
-
那么你在导航到页面时如何设置值?没有足够的代码来重现这个问题 ;)
-
能否请您添加整个页面的代码,以便我们看看这些项目是如何初始化的?
-
@sebaferreras 单独的 2 路绑定并不能解决问题,我不得不添加这些:
storageStatus: string = window.localStorage.getItem('item');出于某种原因,我不能使用布尔值,但字符串,因为存储在 localStorage 中的东西在字符串中 -
我会将
ion-toggle值保存为布尔值而不是字符串。您可以在获取值时转换本地存储字符串,也可以在设置值时转换。
标签: angular ionic-framework ionic3 ion-toggle