backbone.jsを実装する方法について誤解があるかもしれません。複数のモデルをサポートするすべてのビュー(たとえば、複数のモデルを表示できる「Product」ビュー製品)は、そのセッションで作成されたすべてのビューにイベントを送信します。私のビュー内のBackbone.jsイベントが複数回トリガされる
以下の例では、#redirect_productリンクをクリックすると、見た商品の数に応じて「redirect_product」が複数回呼び出されます。私が5つの製品を見た場合、6回目のクリックで6つの警告が表示されます。
ここでは何が起こっていますか?私の練習から
505 /****************PRODUCT VIEW****************/
506 App.Views.Product = Backbone.View.extend({
507 el: $('#content_sec'),
508
509 events: {
510 "click #redirect_product": "redirect_product",
511 },
512
513 initialize: function(options) {
514 this.model = this.options.model;
515 this.render();
516
517 },
518
519 render: function() {
520 $(this.el).empty();
521 $('#product_detail_template').tmpl(this.model.toJSON()).appendTo($(this.el));
522
523
524 //Activate facebook buttons
525 if (typeof FB != "undefined"){
526 FB.XFBML.parse(document.getElementById('item_share'))
527 }
528
529 wishlist.init();
530 return this;
531 },
532
533 redirect_product: function() {
534 //Send data on what product being clicked by whom
535 alert('hi');
536
537
538 //Open new window with product for user
539 var external_link = this.model.get('product').attributes['External Link'];
540 window.open(external_link, "external_site");
541
542 },
543 });
#redirect_product idはページに複数回表示されていますか?もしそうなら、これらの製品ビューインスタンスのそれぞれがイベントを処理する必要があると思われるようです。 –
redirect_product idは、ビューに1回だけ表示されます。ただし、各製品ビューにはredirect_product idのインスタンスが1つあります。他のビューがクリックイベントに応答しないようにするにはどうすればよいですか? – DevX
このリンクを調べる必要があります:http://documentcloud.github.com/backbone/docs/todos.html。私はあなたの問題があなたのエルの扱いにあると信じています。あなたのイベントは、その商品テンプレートにスコープされていません。 –