1

ここにいる他の多くのユーザーと同じように、私はelイベントに問題があります。私の状況では、デフォルトのel(ちょうど<div></div>)設定を使用する、jQueryセレクターを使用してセレクターtagNameに設定elする、DOMの準備が整うのを待つなど、複数のソリューションをテストしました。これらの各ソリューションは、イベントとデフォルト以外のすべてのバインドに失敗しeltagNamehtmlの生成に失敗しました。関連コード:

意見

$ ->
   class Aggregator.Views.Streams.StreamView extends Backbone.View
      template:JST["backbone/templates/stream"]
      el: $('.item')
      events:
       "click div" : "testing"
      initialize: (model)->
       console.log @el
       _.bindAll this , 'render'
       @model.bind 'change', @render
       @model.view = @
       @render()
       @delegateEvents()
      render: ->
       $(@el).html  "test"
       console.log @el
       @
      testing: ->
       alert "EVENT"
       #@model.clear()

ビューを呼び出す関数(別のビューから抽出)

view = new Aggregator.Views.Streams.StreamView({model: stream})
    console.log view.el
    $(@el).append view.render().el

少し混乱しています。設定elしましたが、イベントが作成されないか、バインドされません。DOMがロードされてコンストラクターに渡されるのを待ってみましたelが、成功しませんでした。私の最もありそうな明らかな間違いについての助けをいただければ幸いです。

4

1 に答える 1

6

申し訳ありませんが、私はあなたのイベントハッシュを認識したと思いますが、coffeescriptに慣れていません

events: {
  "click div" : "testing"
}

そして、私はあなたがこのテスト関数をあなたの一般的なビュー要素のクリックにバインドしようとしているに違いありませんか?問題があります。

クリックイベントが実際に行うこと(セレクターに関して)は次のとおりです。

$('div', viewElement).click(fn);

つまり、viewElement divをターゲットにするのではなく、divをビュー要素の内側にターゲットにします。

一般ビュー要素自体にバインドする場合は、セレクターなしでイベントを定義します

あなたの場合:

events: {
  "click" : "testing"
}
于 2011-12-09T23:35:54.790 に答える