Ionic framework 如何实时更新离子切换状态?
我的应用程序中有一个离子开关,它将他的状态存储在firebase数据库中,有没有办法用从firebase加载的数据更改他的状态 例如,如果数据库中的状态为true,则当我加载视图时,切换将打开。我试过使用checked:Ionic framework 如何实时更新离子切换状态?,ionic-framework,ionic2,Ionic Framework,Ionic2,我的应用程序中有一个离子开关,它将他的状态存储在firebase数据库中,有没有办法用从firebase加载的数据更改他的状态 例如,如果数据库中的状态为true,则当我加载视图时,切换将打开。我试过使用checked: <ion-toggle checked="status()" > 其中status返回一个布尔值 但由于firebase的异步功能,视图在状态值之前加载第一个。目前无法找到解决此问题的方法,我非常感谢您的帮助。是的,有办法做到这一点,但在属性中使用函数是没有好处的
<ion-toggle checked="status()" >
其中status返回一个布尔值
但由于firebase的异步功能,视图在状态值之前加载第一个。目前无法找到解决此问题的方法,我非常感谢您的帮助。是的,有办法做到这一点,但在属性中使用函数是没有好处的。当在DOM中使用返回值的函数时,每次DOM发生更改时,都会执行该函数,因此,由于这是一个在Firebase上获取内容的函数,因此每次更新DOM时,都会让用户向Firebase发出请求 一个很好的方法是将Firebase结果存储在一个变量中。当您进入de页面时,可以这样做:
public myStatus: boolean;
// USING A LIFECYCLE HOOK
ionViewWillLoad(){
firebase.database().ref(`Path/To/Your/Status`).once('value', snapshot => {
this.myStatus = snapshot.val();
});
}
在你的HTML中
<ion-toggle [checked]="myStatus">
<!-- You need to bind your checked attribute to myStatus, using checked="{{myStatus}}" also works -->
希望这能有所帮助。哇,非常感谢你,它确实有效!我真不敢相信解决办法竟如此简单!
ionViewWillLoad(){
firebase.database().ref(`Path/To/Your/Status`).once('value', snapshot => {
this.myStatus = snapshot.val();
});
firebase.database().ref(`Path/To/Your/Status`).on('child_changed', snapshot => {
this.myStatus = snapshot.val();
});
// YOU'LL NEED BOTH SINCE THE FIRST LOADS THE STATUS FOR THE FIRST TIME AND THE SECCOND CREATES AN OBSERVABLE FOR WHEN THE STATUS CHANGE.
}