更改路由时将 Ember 控制器属性设置为 false

Set Ember controller property false when changing route

本文关键字:属性 设置 false 控制器 Ember 路由      更新时间:2023-09-26

我有一个音乐组件,播放从我网站的音乐页面中的 SoundCloud API 检索到的收藏歌曲。

{{soundcloud-player favorite=currentFavorite sound=currentFavoriteObject position=currentFavoritePosition isPlaying=isPlaying isBuffering=isBuffering}}

问题是一旦我播放一首歌曲并更改了网站的页面(路由),歌曲就会继续播放,为了解决这个问题,我需要在更改页面的音乐route时设置isPlaying false

看到有不同的方法可以实现它,但我无法弄清楚我的情况

小米尝试

从不同的控制器

needs:'player',
desactivateIsplaying: function(){
    var controller = this.get('controllers.player');
    controller.set('isPlaying', false);
}

或从其他路线出发

desactivateIsPlaying: function(){
    var controller = this.controllerFor('player');
    controller.set('isPlaying', false);
}

在两个功能中的任何一个我都设置不isPlaying false,我也看到提到willTransition路由动作,我该如何使用它? 有没有更好的方法呢?如有必要,我可以制作一个 twiddle 余烬以更好地重现场景

在路线上使用willTransition是一个不错的选择。

音乐/路线.js

import Ember from 'ember';
const { Route } = Ember;
export default Route.extend({
  actions: {
    willTransition() {
      this.controller.set('isPlaying', false);
    }
  }
});