【问题标题】:Ionic 2 on function does not refresh the ngModel properlyIonic 2 on function 无法正确刷新 ngModel
【发布时间】:2017-09-13 23:13:24
【问题描述】:

我使用wavesurfer.js,在它完成播放后,我想将暂停按钮改回播放按钮,但在我打开切换按钮或做某事之前什么都没有发生。

this.wavesurfer.on('finish', function () {
  this.isPlaying = false;
}.bind(this));

我有这个简单的代码,我使用了 console.log(),所以我知道它已经被正确调用,并且绑定也很好。但是,我只有在页面上执行某些操作后才能看到更改。

我该怎么办? 任何帮助将不胜感激。

【问题讨论】:

  • 什么是isPlaying?组件内的字段?
  • 这是一个简单的布尔变量。
  • 在哪里定义的?
  • 对不起,我想给你更多的指示,但我还不知道评论。 :D 所以我有一个 html 文件,我在其中使用 *ngIf=!isPlaying"*ngIf=isPlaying" 它们工作正常,我在我的开头声明了它们.ts 文件,并通过一些方法对其进行更改。但是我现在可以解决它,但这仍然不是答案,但对我来说现在没问题。在我将此变量设置为 false 后,我调用一个方法,将跳转到下一个音频片段,以便该方法将启动一个新音频,或打开一个切换(消息没有更多片段)并刷新按钮。跨度>
  • @Hexiler 检查我的答案..

标签: android ios angular typescript ionic2


【解决方案1】:

播放结束后,我想将暂停按钮改回播放按钮,但直到我打开切换按钮或做某事之前什么都没有发生

我相信你在你的 html 中使用了this.playing..

您的 wavesurfer.js 正在更改 Angular 区域之外的值。

尝试使用ngZone API:

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

constructor(private ngZone:NgZone){}

//...
this.wavesurfer.on('finish', function () {
  this.ngZone.run(()=>{
     this.isPlaying = false;
  });
}.bind(this));

NgZone API

【讨论】:

  • 谢谢。这太棒了。 (但是你在 "...false;})" 之后忘记了一个右括号:))
猜你喜欢
  • 2017-08-25
  • 1970-01-01
  • 1970-01-01
  • 2017-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多