1

以下の PlayerView コードの「クリック」イベントが正しくバインド/起動されない理由を誰か教えてもらえますか? 非常に明白な何かが欠けているように感じますが、多くの異なるソリューションを何時間も試した後、途方に暮れています。

これは、ルーターでインスタンス化される方法です。

App.playerView = new App.Views.PlayerView
  el: $("#player")
  collection: App.tracks

そして、これが実際のビューコードです(関連する場合に備えて、jPlayerプラグインコードを含むCoffeescriptで):

App.Views.PlayerView = Backbone.View.extend
  events:
    "click .jp-next": "next"
    "click .jp-back": "back"

  initialize: ->
    _.bindAll @, 'render'
    @template = _.template $('#player-template').html()
    @collection.bind 'reset', @render
    @render()

  play: (track) ->
    ...

  next: ->
    ...

  back: ->
    ...

  render: ->
    $(@el).html @template {}
    @player = $("#jplayer").jPlayer
      "swfPath": "/"
      ready: =>
        @next()
      ended: =>
        @next()
    @
4

2 に答える 2

1

レンダリングで @delegateEvents() を試してください

于 2012-02-23T11:10:36.473 に答える
0

これを理解すると、それは jPlayer 関連でした。jPlayer は何らかの形で事後にイベントをオーバーライドしていたので、スクリプトからその機能を削除して機能させました。大変でしたが、助けてくださった皆様、ありがとうございました!

于 2012-02-24T04:08:46.820 に答える