Как установить наблюдаемые свойства async в машинописи?
У меня есть несколько свойств, которые выбираются асинхронно. Я хотел бы привязать результат этих свойств к представлению в моем приложении. Тем не менее get
свойства видят переменные модели представления как нулевые. Как я могу связать их после достижения результата? В приведенном ниже коде userEmail
а также appVersion
имеют значение null/undefined в соответствующих функциях get.
export class AccountViewModel extends Observable {
private _userEmail : Email;
private _appVersion : string;
constructor() {
super();
appVersion.getVersionName().then(
(result) =>
{
this._appVersion = result;
console.log(this._appVersion);
});
firebase.getCurrentUser().then(
(result) => {
this._userEmail = new Email(result.email);
});
}
get userEmail(): string {
return this._userEmail != null ? this._userEmail.Value : "";
}
get appVersion(): string {
return this._appVersion;
}
public logout() {
firebase.logout().then((result) => {
Navigator.navigateTo({
moduleName : "views/register/register",
backstackVisible : false,
clearHistory : true
})
}).catch((error) => {
dialogs.alert({
title: "Error",
message: "A system error occurred trying to logout.",
okButtonText: "Ok"
});
});
}
}
1 ответ
Класс Observable имеет метод notifyPropertyChange:)
export class AccountViewModel extends Observable {
private _appVersion : string;
constructor() {
super();
appVersion.getVersionName().then((result) => {
this._appVersion = result;
this.notifyPropertyChange("appVersion", this._appVersion);
});
}
get appVersion() : string {
return this._appVersion;
}
public logout() {
firebase.logout().then((result) => {
Navigator.navigateTo({
moduleName : "views/register/register",
backstackVisible : false,
clearHistory : true
})
}).catch((error) => {
dialogs.alert({
title: "Error",
message: "A system error occurred trying to logout.",
okButtonText: "Ok"
});
});
}
}