gpt4 book ai didi

javascript - 通过路由转换维护组件状态 - EmberJS

转载 作者:行者123 更新时间:2023-12-02 14:17:32 24 4
gpt4 key购买 nike

我正在使用 Ember 构建一个单页音乐网络应用程序。每个轨道在页面上都表示为一个组件。给定页面上有许多轨道。当用户单击播放时,组件会更新其 UI 以反射(reflect)这一点,并且主路由会跟踪当前正在播放的轨道。

但是当我切换路线来探索应用程序的其他部分,然后返回到正在播放轨道的路线时,Ember 已销毁并重建了每个组件,将所有内容设置回其初始状态并使路线的 current_track 对象过时.

如何在路由转换中最好地保持这样的状态?

我的路线层次结构:

master-route 
liked-tracks
favorite-tracks
posted-tracks

另一种思考方式是:在 soundcloud 上,您播放轨道,然后导航到不同的路线。当您向后导航时,播放元素并未丢失其状态或被重建。

最佳答案

执行此操作的正确方法是服务。

您可能会有一个服务player并将其注入(inject)到您的组件中。然后你就有了一个方便的地方来管理所有放置器的东西,并且可以在你的组件中使用它。

您可以访问服务上的属性,甚至可以在计算属性中使用它,如下所示:

player: Ember.inject.service(),
isCurrentTrack: Ember.computed('track', 'player.currentTrack', {
get() {
return get(this, 'track') === get(this, 'player.currentTrack');
}
}),

这实际上是服务的用例!

关于javascript - 通过路由转换维护组件状态 - EmberJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38907180/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com