改变路线时设置 Ember controller 属性 false

Set Ember controller property false when changing route

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

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

问题是一旦我播放歌曲并更改网站的页面(路由),歌曲一直在播放,要解决它我需要随时设置 isPlaying false 我更改页面的音乐route

我看到有不同的方法可以实现它,但我想不出适合我的情况

我试了

来自不同的控制器

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);
}

isPlayingfalse两个函数中我都没有设置,我也看到提到willTransition路由动作,我该如何使用它?有没有更好的方法呢?如果有必要,我可以做一个旋转 ember 来更好地重现场景

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

music/route.js

import Ember from 'ember';

const { Route } = Ember;

export default Route.extend({
  actions: {
    willTransition() {
      this.controller.set('isPlaying', false);
    }
  }
});