backbone.jsレンダリングを表示しますが、ページには表示されません
-
10-12-2019 - |
質問
単一ページアプリをbackbone.jsに変換することに取り組んでいます。下の図は、そのタグ名としてBODYタグを使用します - つまり、ビューにページの内容全体を占有してほしい。私はコンテナのDIVや他のハックを使いたくありません。
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セットを使用してbody
:に登録することです。
new ThingView({el:'body'})
. 他のヒント
Nikoshrが正しいのですか。タグ名を使用してそれを追加することは正しいです。しかし、理想的には、Backbone.js Libraryで定義されているEL要素(EL)を使用する必要があります。
は、これを行っている間使用すべき理想的なコードです。
<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>
. 所属していません StackOverflow