【发布时间】:2019-03-25 05:47:37
【问题描述】:
我遇到了一个奇怪的问题,我的 HTML 页面在 angular 组件变量更改时没有更新。按下按钮后,我进行网络加载并开始播放音频,如下所示:
onPreviewPressed(media: Media): void {
if (this.playing) {
this.playing = false;
this.source.stop();
}
this.loading = true;
this.service.downloadAudio(this.gender, this.style, this.ageRange, media).subscribe(abuf => {
this.context.decodeAudioData(abuf, buffer => {
this.source.buffer = buffer;
this.playing = true;
console.info(`Playing is ${this.playing}`);
this.source.start(0);
}, y => {
console.info('Error: ' + y);
});
this.loading = false;
}, () => {
this.loading = false;
});
}
然后在我的 HTML 上我有这个 sn-p:
Playing is {{ playing }}
<button [hidden]="!playing" style="width: 44px; height: 44px" (click)="onStopPressed()">
<img src="/assets/stop.png" alt="Stop">
</button>
当我单击按钮时,音频会正确下载并开始播放,在控制台中我看到它显示 Playing is true 但 HTML 继续显示为 false,并且不显示按钮。
我认为这可能是this 不是真正的组件而是窗口变量的问题,但如果是这种情况,那么音频真的可以播放,因为source 变量是组件。
【问题讨论】:
-
你能告诉我们调用
onPreviewPressed的代码吗? -
其实不推荐使用hidden blog.angularjs.org/2016/04/…