誰かが次のような理由で私に言ってくれますか?私はjsfiddleは手始めに、ここでhttp://jsfiddle.net/neilcharlton/yj5Pz/1/backbone.jsシンプルビューイベントが発射しない
5
A
答えて
19
あなた$("body")
セレクタDOMがロードされる前に起動しているので、空に戻り、リンクにバインドされることはありません。
バックボーンオブジェクト定義はオブジェクトリテラルで定義されています。つまり、モデルのインスタンス化時ではなく、定義時にすぐに評価されます。
この:
Backbone.View.extend({foo: "bar"})
は、機能的にこれと同じです:
var config = {foo: "bar"};
Backbone.View.extend(config);
あなたはel
の値として$("body")
セレクタを持っているので、それはできるだけ早くビューの設定が解析されるように評価されますDOMがまだロードされておらず、何も返されないことを意味します。
これを解決するためのオプションがいくつかありますが、そのすべては、DOMがロードされるまでセレクタの評価を遅らせることです。
私の個人的な好みは、DOMがロードされた後、インスタンス生成時にビューにして、セレクタを渡すことです。また、
var AppView = Backbone.View.extend({
// don't specify el here
});
$(function(){
// after the DOM has loaded, select it and send it to the view
new AppView({ el: $("body") });
}
- Skylarが言ったように、あなたのイベントが間違って宣言されました。ここで
は作業JSFiddleです:Derickの回答に加えて、DOM要素の範囲についての世話をする、私は、要素上の簡単なクリックイベントをトリガしようとしていたが、私のView.elは非直接の親を参照して http://jsfiddle.net/yj5Pz/5/
9
ありリンクに
<body>
<a class="newnote" href="#">Add new note</a>
</body>
<script>
var note = Backbone.Model.extend({});
var notes = Backbone.Collection.extend({
model: note,
url: '<?= $this->createUrl('/filenotes/api'); ?>'
});
var note_view = Backbone.View.extend({
el: 'table',
});
var Appview = Backbone.View.extend({
el: $('body'),
events: {
"a click" : "showForm"
},
initialize: function(){
//alert('hi');
},
showForm: function(){
alert('hi');
}
});
var v = new Appview();
</script>
をクリックすると、イベントオブジェクトを火にアラートを期待しています。この構文は次のとおりです。
events: {
"click a" : "showForm"
},
1
何らかの理由で(再帰バグかもしれない)、うまくいきませんでした。私がelを "body" cssセレクタに変更したとき、すべてがうまくいった。
関連する問題
- 1. backbone.jsクリックイベントが発射されない
- 2. Backbone.js - PUTリクエストを発射しない
- 3. イオンライフサイクルが発射しない
- 4. jquery tipsyが発射しないonclick IE
- 5. GoogleタグマネージャがUAを発射しない
- 6. Socket.ioサーバーが発射しない
- 7. 減速機が発射しない
- 8. シートウィンドウのNSTimerが発射しない
- 9. Cocoa:NSViewのキーダウンイベントが発射されない
- 10. クリックイベントが発射されない
- 11. jquery clickイベントが発射されない
- 12. 流星が発射されないイベント
- 13. ASP.NETイベントが発射されない
- 14. Java - KeyListenerイベントが発射されない
- 15. グループマウスイベントが発射されないJavafx
- 16. GTKウィンドウDeleteEventが発射されない
- 17. Android SMS BroadcastReceiverが発射されない
- 18. 角度プロミスコールバックが発射されない
- 19. WebExtension Firefoxアラームが発射されない
- 20. バックボーンクリックイベントが発射されない
- 21. Youtubeビデオイベントが発射されない
- 22. onmousemoveイベントが発射されない
- 23. wp_cronがスケジュールされているが発射していない
- 24. ファンクションは発射したくない
- 25. SelectionChanged WPFを発射しない
- 26. ボーダータッチボタン:アクティブになっているが発射イベントは発生していない
- 27. 観測可能なforkJoinが発射しない
- 28. クォーツが単純なトリガを発射しない
- 29. ストップ発射アヤックスが
- 30. Backbone.jsイベントが発生しないと表示する
おかげさまで、ありがとうございました。 – 32423hjh32423
Backboneは、 'el:' body '、...} 'の時に、' el .'をjQueryで自動ラップするという事実に頼ることになります。あなたが探していたjQuery要素。 – rfunduk
+1 rfunduk - 新しいv0.9シリーズのバックボーンにより、これを扱いやすくなりました。バックボーンは私たちのために、jqueryセレクターで手動でエルをラップする必要はありません –