2

Ich habe ein Klickereignis an eine Ansicht angehängt, und el dieser Ansicht wird mithilfe von className und tagName definiert. Nachdem Sie diese Ansicht gerendert haben, klicken Sie auf Ereignis wird nicht für den Selektor className ausgelöst.Backbone-Ansichtsereignisse werden nicht ausgelöst, wenn sie an die oberste Klassenebene des Elements angehängt werden.

Unten ist die meiner Ansicht nach -

define([ 
'jquery', 
'underscore', 
'backbone', 
'models/MovieModel', 
'text!templates/movieTemplate.html' 
],function($,_,Backbone,Moviemodel,movieTemplate){ 

var Moviesview= Backbone.View.extend({ 
    tagName:'div', 
    className:'box', 
    events : { 
     'click .box': 'boxClicked' 

    }, 
    boxClicked: function(){ 
      alert('world'); 
    }, 
    initialize: function(){ 

    }, 
    render: function(){ 

     var data= {moviemodel: this.model.toJSON(), _:_ }; 
     var compiledTemplate =_.template(movieTemplate); 
     compiledTemplate= compiledTemplate(data); 
     this.$el.html(compiledTemplate); 
     return this; 
    } 
}); 
return Moviesview; 
}); 

Diese Ansicht von einem anderen view-

define([ 
    'jquery', 
    'underscore', 
    'backbone', 
    'models/MovieModel', 
    'views/movieview', 
    'views/detailedmovieview' 
], function ($, _, Backbone, Moviemodel, Movieview, Detailedmovieview) { 
var Movieslistview = Backbone.View.extend({ 

     el: $('.content'), 
     initialize: function() { 
      var that = this; 
      this.collection.fetch({ 
       success: function (collection, response) { 
        that.render(); 
       }, 
       error: function() { 
        alert('failed!'); 
       } 
      }); 
     }, 
     render: function() { 
      this.collection.each(function (row) { 
       var temp = new Movieview({ 
         model: row 
        }); 
       this.$el.append(temp.render().el); 

      }, this); 
      return this; 
     } 
    }); 
return Movieslistview; 

}) aufgerufen wird, bekommen;

Vorlage verwendet hier-

<div class='main-content'> 
<div class="actors"> 
    <div class="actors-label">Actors:</div> 
    <div class="actors-name"><%= moviemodel.actor_1_name %></div> 
</div> 
<div class="additional-info">    
</div> 
</div> 

Click-Ereignisse für .main-Inhalt und .Zusätzliche-info auslösen richtig, aber nicht für .box.

Antwort

1

Um Ereignisse zu befestigen Element zu sehen, sollte Ihre Veranstaltung bindend:

events : { 
    'click': 'boxClicked' 
}, 
Verwandte Themen