Kyl*_*cot 5 javascript client-side ember.js ember-data
我有一个嵌套资源的ember应用程序,我正在显示视频.外部资源(视频)只显示所有视频.单击视频时,将video激活嵌套资源并显示标题/播放器.
这在您第一次点击某些内容时效果很好.视频显示并播放.但是,当点击另一个视频时,嵌套的资源视频会更新,DOM <source>会更新,但OLD视频会继续播放!为什么会发生这种情况,我该如何解决?
我将使用一个组件来创建视频播放器,并将重新渲染逻辑封装在组件中。
该组件看起来像
App.VideoPlayerComponent = Ember.Component.extend({
src: null,
rerenderPlayer: function(){
if(this.$()) {
Ember.run.debounce(this, this.rerender, 200);
}
},
srcObserver: function(){
this.rerenderPlayer();
}.observes('src')
});
Run Code Online (Sandbox Code Playgroud)
组件模板看起来像
<script type="text/x-handlebars" data-template-name="components/video-player">
<video controls>
<source {{bind-attr src=src}} type = "video/mp4"></source>
</video>
</script>
Run Code Online (Sandbox Code Playgroud)
然后您就可以像这样引用模板中的组件
<script type="text/x-handlebars" data-template-name="video">
<h2>{{title}}</h2>
{{video-player src=src}}
</script>
Run Code Online (Sandbox Code Playgroud)
您可以在这里看到一个工作垃圾箱: http: //emberjs.jsbin.com/fehipa/2/edit
作为奖励......如果您创建了一个视频播放器组件,您还可以在组件中包含暂停和播放视频的功能。这样您就可以拥有一个完全可重用的视频播放器,可以在应用程序的任何位置使用。
| 归档时间: |
|
| 查看次数: |
317 次 |
| 最近记录: |