2012-06-02 4 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

나는 당신이 달성하고자하는 것이 확실하지 않지만 Derick의 해결책에 대한 대안을 시도 할 수 있습니다.

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로 당신에게주는 당신이 그것에게 데이터를 제공 할 때마다 다시 컴파일하지 말아야 함수가된다.