なぜ私のcoffeescript/backbone.jsイベントが発生していないのですか?
-
29-09-2019 - |
質問
私はcoffeescriptとbackbone.jsに慣れようとしていますが、何かが足りないに違いありません。
このcoffeescript:
MyView = Backbone.View.extend
events: {
"click" : "testHandler"
}
testHandler: ->
console.log "click handled"
return false
view = new MyView {el: $('#test_container')}
view.render()
次のJavaScriptを生成します。
(function() {
var MyView, view;
MyView = Backbone.View.extend({
events: {
"click": "testHandler"
},
testHandler: function() {
console.log("click handled");
return false;
}
});
view = new MyView({
el: $('#test_container')
});
view.render;
}).call(this);
しかし click
イベントは発砲しません testHandler
クリックすると test_container
.
出力JavaScriptを変更した場合:
$(function() {
var MyView, view;
MyView = Backbone.View.extend({
events: {
"click": "testHandler"
},
testHandler: function() {
console.log("click handled");
return false;
}
});
view = new MyView({
el: $('#test_container')
});
view.render;
});
削除 call(this)
そして、追加します $
, 、すべてが期待どおりに機能します。何が足りないの?
解決
(function () {}).call(this);
レシーバーを指定しながら匿名関数をすぐに呼び出す方法です。基本的には次のように機能します。
this.method = function () {};
this.method();
$(function () {})
, 、少なくともjQueryでは、速記です
$(document).ready(function () {})
DOMツリーが完全に構築されたときに、与えられた関数を実行します。これはあなたのために必要な条件のようです Backbone.View.extend
適切に機能する機能。
他のヒント
アプリケーションスクリプトにcoffeescriptとjqueryを一緒に使用するには、この種のテンプレートにコードを入れます。
$ = jQuery
$ ->
MyView = Backbone.View.extend
events:
"click": "testHandler"
testHandler: ->
console.log "click handled"
false
view = new MyView el: $('#test_container')
view.render()
Coffeescriptクラス宣言の構文を使用してみてください。
class BacklogView extends Backbone.View
constructor: (@el) ->
this.delegateEvents this.events
events:
"click" : "addStory"
# callbacks
addStory: ->
console.log 'it works!'
ビュー、または少なくともビュー.elが動的に生成されるとどうなりますか? view.delegateEvents()メソッドを呼び出して、イベントハンドラーを手動で設定できます。
ParentViewでChildViewをレンダリングし、ChildViewのイベントを委任するための同様のCoffeescriptがあります。
window.ParentView = Backbone.View.extend
addOne: (thing) ->
view = new ChildView({model: thing})
this.el.append view.render().el
view.delegateEvents()
所属していません StackOverflow