質問

単一ページアプリを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>
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top