2011-12-13 10 views
0

私はBackboneビュークラスでCoffeeScriptを使用しています。 HTMLと同じページにクラスを含めると、すべて正常に動作します。別のファイルを使用してクラスをエクスポートすると、初期化されますが、イベントはマップされません。バックボーンイベントを別のバックボーンクラスファイルにマッピング

クラスファイルは次のとおりです。

root = exports ? this 

class root.AppView extends Backbone.View 

    el: $("#app") 

    events: 
     'click #appBtn1' : 'handleEvent' 
     'click #appBtn2' : 'handleEvent' 

    initialize: => 
     alert 'init' 

    handleEvent: => 
     alert 'event' 

のみ初期化関数が発生します。コードが別のクラスにあるときにイベントをマップするには、何を変更する必要がありますか?

答えて

5

問題は機能

$("#app") 

実行はすぐにあなたがクラスを定義するときということです。したがって、クラスが別のファイルにある場合、#app要素はDOMに(必然的に)存在しません。

クラスがインスタンス化されたとき、そのバックボーンは$関数に渡すあなたが代わりにセレクタ文字列を使用しているやるべきこと:

el: "#app" 
関連する問題