2012-06-02 3 views
1

Я использую шаблоны подчеркивания, чтобы отобразить мою страницу. Проблема начинается, когда я использую:подчеркивание шаблона селектора

$(function(){ 
    console.log($('.input-placeholder')); 
}); 

и я могу получить доступ к ним иногда, иногда это просто не работает, потому что страница визуализируется после загрузки документа.

Поэтому я использую

$('#application').html(_.template('<div class="input-placeholder"></div>', {})); 

И иногда выводит на консоль, что он нашел вход-заполнитель, но не все время. Как я могу убедиться, что после загрузки шаблона запускается $ (function() {}).

Благодаря

ответ

1

http://lostechies.com/derickbailey/2011/11/09/backbone-js-object-literals-views-events-jquery-and-el/

Прочитайте шаблон в методе визуализации:


Backbone.View.extend({ 
    render: function(){ 
    var html = _.template($("#my-template")); 
    this.$el.html(html); 
    } 
}); 

А потом ждать, пока после того, как событие DOMReady уволила перед началом вашего приложения, создавая свой экземпляр представления и визуализации Это.

+1

Если это не один шаблон, вы, вероятно, не захотите перекомпилировать шаблон для каждого представления, которое нуждается в этом шаблоне. – Jack

0

Я не уверен, чего вы пытаетесь достичь, но вы можете попробовать эту альтернативу решению Дерика.

Backbone.View.extend({ 
    el: document.createElement('div'), 
    template: null, 
    render: function(){ 
     if(this.template === null){ 
      this.template = _.template($('#my-template')); 
     } 
     this.$el.html(this.template({})); 
    } 
}); 

Пожалуйста, обратите внимание, что если вы делаете:

var something = _.template('<div><%= haha %></div>'); 

something становится функцией, которая дает вам HTML, когда вы даете ему данные, вы не должны перекомпилировать каждый раз.

Смежные вопросы