我在 TypeScript 中创建了一个简单的类:
export class LoginInformation {
private _UserName: string;
public get userName(): string {
return this._UserName
}
public set userName(v: string) {
this._UserName = v;
}
}
然后我可以实例化该类:
private _LoginInformation: LoginInformation;
this._LoginInformation = new LoginInformation();
(并且还实现 getter 和 setter),然后分配一个值
this.loginInformation.userName = "User1";
现在我可以在 HTML 中使用该对象了:
<ion-item>
<ion-input type="text" placeholder="Name" [(ngModel)]="loginInformation.userName"></ion-input>
</ion-item>
现在我可以更改我的对象属性
this.loginInformation.userName = "User2";
并且屏幕按预期方式更新。即使我设置:
var self: LoginInformation = this.loginInformation;
self.userName = "User3";
一切都好。但是如果我使用异步函数(例如从应用程序首选项 - 插件中获取值)
this._AppPreferences.fetch(
(value) => {
self.userName = "User4";
},
(error) => {
alert("Error loading Configuration: " + error);
},
"LoginInformation");
屏幕上的值未更新。我以为引用的赋值
self: LoginInformation = this.loginInformation
应该以预期的方式工作。但好像少了点什么。
知道我做错了什么吗?
最佳答案
您不需要使用 self.userName
,您应该能够使用 this.userName
,因为您处于箭头函数中:
this._AppPreferences.fetch(
(value) => {
this.userName = "User4";
},
(error) => {
alert("Error loading Configuration: " + error);
}
);
关于javascript - 如果我在异步函数中用作引用,Angular2/Ionic2/TypeScript "two way"绑定(bind)不会更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35998026/