Tôi có thể hiểu sai về cách triển khai backbone.js, vì tất cả các chế độ xem của tôi hỗ trợ nhiều mô hình (ví dụ: chế độ xem "Sản phẩm" có thể hiển thị nhiều sản phẩm), sẽ gửi các sự kiện tới mọi chế độ xem đã được tạo trong phiên đó.Sự kiện Backbone.js trong quan điểm của tôi đang kích hoạt nhiều lần
Vì vậy, trong ví dụ bên dưới, khi tôi nhấp vào liên kết #redirect_product, "redirect_product" được gọi nhiều lần tùy thuộc vào số lượng sản phẩm tôi đã xem. Nếu tôi đã xem 5 sản phẩm, vào lần nhấp thứ 6, tôi sẽ nhận được 6 thông báo.
Điều gì đang xảy ra ở đây?
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 });
Id #redirect_product có xuất hiện nhiều lần trên trang không? Nếu có, dường như mỗi trường hợp xem sản phẩm này sẽ nghĩ rằng họ cần xử lý sự kiện. –
Id redirect_product chỉ xuất hiện một lần trong chế độ xem. Tuy nhiên, mỗi lượt xem sản phẩm sẽ có một phiên bản của id redirect_product. Làm thế nào tôi có thể ngăn các chế độ xem khác phản hồi sự kiện nhấp chuột? – DevX
Bạn cần nghiên cứu liên kết này: http://documentcloud.github.com/backbone/docs/todos.html. Tôi tin rằng vấn đề của bạn nằm trong việc điều trị el. Sự kiện của bạn không được đưa vào mẫu sản phẩm. –