правильный способ динамического назначения представления backbone.js el

Я хотел бы создать два (или более )экземпляра представления, каждый с разными атрибутами el, и привязать к ним события через хэш событий представления backbone.js (, а не через jQuery ).

Заставить события запускаться, когда все экземпляры имеют одинаковый el, легко :

someView = Backbone.View.extend({
  el: '#someDiv',

  events: {
    'click': 'someFunction'
  },

  someFunction: function(){
    //Do something here
  }
});

. До сих пор, если я назначаю elв функции initializeи устанавливаю eventsобычно следующим образом, события не вызывают:

someView = Backbone.View.extend({
  events: {
    'click': 'someFunction'
  },

  initialize: function( options ){
    this.el = options.el
  },

  someFunction: function(){
    //Do something here
  }
});

Моим первым побуждением было сделать elфункцией, которая возвращает строковое представление интересующего элемента dom:

someView = Backbone.View.extend({
  el: function(){
    return '#someDiv-' + this.someNumber
  },

  events: {
    'click': 'someFunction'
  },

  initialize: function( options ){
    this.someNumber = options.someNumber
  },

  someFunction: function(){
    //Do something here
  }
});

Однако это вызывает someFunctionx раз, если у меня есть x экземпляров someView.

Затем я попытался установить атрибуты elи eventsв initialize:

someView = Backbone.View.extend({

  initialize: function( options ){
    this.el = options.el
    this.events = {
      'click': 'someFunction'
    }
  },

  someFunction: function(){
    //Do something here
  }
});

. но это не запускает события. На данный момент я в значительной степени рыбачу.

Кто-нибудь знает, как создать представление backbone.js с el, специфичным для этого экземпляра, у которого есть события, которые запускаются только для этого экземпляра, а не для других экземпляров View?

25
задан kikuchiyo 26 June 2012 в 15:12
поделиться