1

シングルページ アプリを backbone.JS に変換する作業を行っています。以下のビューでは、body タグを tagName として使用しています。つまり、ページのコンテンツ全体をビューで占めたいと考えています。コンテナ 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​&lt;/h1>​
</body>​
]       

しかし、DOM を調べたところ、本文にテキストがありません。

4

2 に答える 2

7

tagNameコンストラクターによって el が提供されない場合に、Backbone がその el を作成するために使用するタグを示します。作成された要素は、DOM に自動的に挿入されません。

最も簡単な方法は、おそらく el を に設定してビューを作成することbodyです:

new ThingView({el:'body'})
于 2012-03-09T13:15:21.180 に答える
0

nikoshrが説明したことは正しいです。それに加えて、tagNameの使用は正しいです。ただし、理想的には、Backbone.jsライブラリでViewの要素(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>
于 2012-03-09T13:26:04.020 に答える