2012-06-05 4 views
1

안녕하세요. 내 애플리케이션에 Backbone.js + require.js를 사용하고 있습니다. Firefox에서 렌더링 템플릿에 문제가 있습니다. 그것은 여기 Backbone.js Firefox 문제

어떤 사람이 나에게 미리

+1

은 $ (document) .ready ({...})로 싸여있는 코드입니까? – spacevillain

+0

어디에 포장 해 주시겠습니까? 보기에서? – Kishore

+0

즉, 코드를 실행할 때 $ ("# page")에 액세스 할 수 있습니까? .ready()에 전체 코드를 래핑 한 다음 확인하십시오. – spacevillain

답변

0

this.el에서 무슨 문제를

감사를 알릴 수

define([ 
    'jquery', 
    'underscore', 
    'backbone', 
    'text!templates/home/main.html' 
], function ($, _, Backbone, mainHomeTemplate) { 

    var mainHomeView = Backbone.View.extend({ 
     el: $("#page"), 
     render: function() { 
//   console.log("loading template"); 
      this.el.html(mainHomeTemplate); 
     } 
    }); 
    return new mainHomeView; 
}); 

을 렌더링하는 코드 인에 대한 참조입니다 크롬과 IE에서 잘 작동 뷰의 원시 DOM 요소. Chrome은 원시 DOM 요소에 HTML 메소드가 있어야하지만 (분명히) Firefox는 그렇지 않습니다.

어쨌든 당신이 원하는 것은 동일한 요소의 jQuery 랩핑 된 버전입니다.이 요소는 this.$el을 사용하여 얻을 수 있습니다. 어떤 이유로 든 이전 버전의 백본 ($ el이 다소 최근에 추가되었습니다)을 사용하고 있다면 $(this.el)을 대신 할 수 있습니다. 그것은 동일하게 작동 할 것이지만 약간 덜 편리합니다.

jQuery 객체가 항상 "html"메소드를 가지고 있기 때문에 jQuery 랩핑 된 요소 버전을 사용하면 .html(mainHomeTemplate) 호출이 작동합니다.

+0

나는 그것을 시험해 보았지만 같은 문제가 생겼다. 내 방화범 쟁이 콘솔에서 어떤 자바 스크립트 오류도 보지 못했다. 내가 누락 된 것이 있습니까? – Kishore

+0

엘이 당신이 생각하는 그런 게 아니라고 생각합니다. console.logging을 시도해 볼 수 있습니다. 내가 맞다면 뷰의 initialize 메소드 (또는 호출 방법의 타이밍에 따라 렌더 자체에서)에서 el을 설정해보십시오 (.setElement를 통해). – machineghost