Backbone.js Вид визуализации, но не отображается на странице
-
10-12-2019 - |
Вопрос
Я работаю над преобразованием одностраничного приложения в Backbone.js.Ниже представление использует тег для тела, так как это Tagname - т. Е. Я хочу, чтобы представление займет все содержимое страницы.Я не хочу использовать контейнеров Divs или другие хаки.
var ThingView = Backbone.View.extend({
tagName : "body",
...
// Show the HTML for the view
render : function() {
console.log('Displaying thing')
$(this.el).append('<h1>test</h1>');
console.log('finished')
console.log($(this.el))
return this; // For chaining
.
При рендеринге я вижу
finished
[
<body>
<h1>test</h1>
</body>
]
.
Но после того, как я проверю DOM, тело больше не имеет текста.
Решение
tagName
Указывает, какая метка метки следует использовать для создания его EL, если нет EL не предоставляется конструктором.Созданный элемент не вставляется автоматически в DOM.
Самый простой способ, вероятно, создать свой вид с его EL SET для body
:
new ThingView({el:'body'})
. Другие советы
Какой Никошр объяснил, является правильным.Добавление к нему, используя Tagname верно.Но в идеале вам следует использовать EL элемент, который определяется в библиотеке Backbone.js в виде элемента (EL) View.
Ниже приведен идеальный код, который вы должны использовать при этом.
<script type="text/javascript">
$(document).ready(function(){
var ThingView = Backbone.View.extend({
el:$("body"),
initialize: function(){
_.bindAll(this,"render");
this.render();
},
render:function(){
this.el.append('<h1>test</h1>');
console.log('finished');
console.log($(this.el).html());
}
});
var ThingView = new ThingView();
});
</script>
.