【发布时间】:2020-08-10 13:53:09
【问题描述】:
我正在尝试构建一个 Glimmer 组件,该组件对服务中的属性更改做出反应,请参见下文,我正在尝试使组件更新 get 播放以响应 audioPlayer url 和状态的更改——这些更改已更改当在下面的播放动作中按下播放按钮时......这不起作用,我无法找到任何文档来支持这种行为。
import { action } from '@ember/object';
import { inject as service } from '@ember/service';
export default class ShowAudioEpisodeComponent extends Component {
@service audioPlayer;
get playing() {
return this.audioPlayer.url == this.args.epi.audioUrl && this.audioPlayer.status == "playing";
}
@action
play() {
if (this.playing) {
this.audioPlayer.pause(this.args.epi);
} else {
this.audioPlayer.playEpisode(this.args.epi);
}
}
}
【问题讨论】:
-
audioPlayer.url是否标记为已跟踪? -
否,如果需要,不确定语法?
-
你需要告诉 Ember 属性可以改变。否则,getter 中的派生状态(如
get playing() {})和模板中的用法如果发生更改将不会更新。请在指南中找到更多详细信息:guides.emberjs.com/release/components/… 和 guides.emberjs.com/release/upgrading/current-edition/…
标签: ember.js glimmer.js