gpt4 book ai didi

Angular ,回调不会改变变量

转载 作者:太空狗 更新时间:2023-10-29 17:47:41 24 4
gpt4 key购买 nike

我有以下片段

这是我的ma​​in.html

<h2 class="txtcenter po-2text" style="padding-top:30px">
{{title}}
</h2>

这是我的ma​​in.ts:

title: string;

ngOnInit() {
var self = this;
var ref = firebase.database().ref('schools/' + this.currentUserId());
ref.orderByChild('title').on('value', function(dataSnapshot) {
console.log("Title is: " + dataSnapshot.val().title);
self.title = dataSnapshot.val().title;
});
}

即使回调被一些有效数据触发,标题也不会自动更新。我错过了什么?

感谢任何帮助!

最佳答案

Angular 变化检测基于浏览器事件工作,因为这是一个 fire base 事件回调,不会触发变化检测。所以试试下面的方法

导入 NgZone:

import { Component, NgZone } from '@angular/core';

将它添加到你的类构造函数中

constructor(public zone: NgZone, ...args){}

使用 zone.run 运行代码:

ref.orderByChild('title').on('value', (dataSnapshot) => {
console.log("Title is: " + dataSnapshot.val().title);
this.zone.run(() => this.title = dataSnapshot.val().title;)
});

关于 Angular ,回调不会改变变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52662094/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com