javascript - 如果我在异步函数中用作引用,Angular2/Ionic2/TypeScript "two way"绑定(bind)不会更新

标签 javascript typescript angular observable ionic2

我在 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/

相关文章:

javascript - 用 typescript 编写 Node.js 服务器

html - 如何在 Angular 4 中为 ng-template 标签提供样式?

angular - 将类导入angular2中的另一个类组件

javascript - Angular/Typescript 中的 <var> 语法是什么意思?

javascript - Ajax 自动更新社交网站中的时间和日期

javascript - 在 IE10 中焦点/输入时文本区域占位符不会消失

javascript - 推荐一个好的 Javascript 库,用于在一个表面上绘制图表和表格

html - 我无法让任何元素在打印预览中显示颜色

javascript - 根据服务器响应设置复选框

Angular 2获取输入元素值