2014-12-02 1 views
1

Я использую марионетку магии в браузере.«el» должен существовать в DOM при использовании базовой марионетки в браузере.

У меня возникла проблема с отображением вида.

У меня есть addRegions и хочу показать ItemView.

Но консоль показывает ошибку: Uncaught Error: An "el" #tmp_area must exist in DOM.

В моем файле HTML есть #tmp_area.

Когда я использую require.js, он не показывает эту проблему, но это произошло, когда я перейду на использование браузера.

Я не знаю, что случилось.

Ниже приведен мой код.

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

спасибо !! Это действительно исправить. Но мне любопытно, почему этого не происходит, когда я использую require js. –

+0

@JackHou Вы, вероятно, использовали атрибут 'data-main' скрипта require для определения основного файла, не так ли? RequireJS загружает этот основной файл асинхронно, поэтому документ был готов в то время, когда RequireJS извлек его. –

+0

Хорошо, я понял! Ваш ответ заставляет меня многому учиться. Благодаря! –

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