2014-12-02 5 views
1

브라우저 백서에서 백본 마리오네트를 사용합니다.브라우저에서 백본 마리오 네트를 사용할 때 DOM에 "el"이 있어야합니다.

보기를 표시하는 데 문제가 발생했습니다.

나는 addRegions이며 ItemView을 보여주고 싶습니다.

그러나 콘솔 쇼 오류 : Uncaught Error: An "el" #tmp_area must exist in DOM.

내 HTML 파일의 크기는 #tmp_area입니다.

require.js를 사용할 때이 문제는 표시되지 않지만 browserify를 사용하도록 변경하면 문제가 발생합니다.

무엇이 잘못 되었나요?

아래 코드는 제 코드입니다.

app.js

var Backbone = require('backbone'); 
var $ = require('jquery'); 
Backbone.$ = $; 

var Marionette = require('backbone.marionette'); 
var MyView = require('./views/my_view'); 

var app = new Marionette.Application(); 

app.addRegions({ 
    tmp_area: "#tmp_area" 
}); 

app.addInitializer(function() { 
    var myView = new MyView(); 
    app.tmp_area.show(myView); 
}); 

app.on("initialize:after", function() { 
    if (Backbone.history) { 
     Backbone.history.start(); 
    } 
}); 

app.start(); 

my_view.js

var $ = require('jquery'); 
var Backbone = require('backbone'); 
var Marionette = require('backbone.marionette'); 
var templates = require('../templates/tmp.hbs'); 
Backbone.$ = $; 

module.exports = Marionette.ItemView.extend({ 
    template: templates, 
}) 

제발 도와주세요!

감사합니다.

답변

3

저는 이것이 문서 준비 상태와 관련이 있다고 확신합니다. HTML 하단에 스크립트를 두거나 응용 프로그램 초기화 단계를 document.ready 함수로 감쌀 수 있습니다.

+0

감사합니다. 그것은 정말로 그것을 고친다. 하지만 js를 사용할 때 왜 발생하지 않는지 궁금합니다. –

+0

@JackHou 메인 파일을 정의하기 위해 require 스크립트의'data-main' 속성을 사용했을 것입니다. 맞습니까? RequireJS는이 주 파일을 비동기 적으로로드하므로 RequireJS가 가져온 시점에 문서를 준비 할 수 있습니다. –

+0

알았어, 알았다! 귀하의 회신은 나를 많이 배웁니다. 감사! –