如何将处理程序绑定到ember.js中视频标记的已结束事件

时间:2012-09-26 02:55:48

标签: ember.js

我在获取一个余烬视图以响应视频标记中的“已结束”视图时遇到问题 - 我甚至在应用程序中设置了自定义并在视图上创建了一个已结束的方法,但没有骰子。我在视图的didInsertElement中通过$()获得了一些工作,但视图的标准“on”方法没有做任何事情 - 就像事件发生在元素上,但没有进入视图。但是通过$设置意味着“这个”不是绑定到视图而是绑定到元素,这对我没有帮助

我的观点:

CommercialView: Em.View.extend
            tagName: 'video'
            templateName: "commercial"
            attributeBindings: ['autoplay', 'width', 'height']
            width: 320
            height: 240
            autoplay: true
            ended: (event) ->
                debugger
            didInsertElement: () ->
                #this.on('ended', this.ended)​ #doesn't work
                this.$().on('ended', this.ended) #shifts this to the element 

我的申请:

App = Em.Application.create
    customEvents: {
        'ended':'ended'
    }

1 个答案:

答案 0 :(得分:4)

这是jQuery的限制,Ember用于事件。它无法委托视频或音频事件:http://jsfiddle.net/XzVXx/

不幸的是,它也缺乏为context之类的事件采用$.ajax()参数的能力,因此你无法指定this的含义。

你最接近的是:

didInsertElement: function(){
  this.$().on('ended', $.proxy( this.ended, this )) ;
}