1

ビューにコレクションとモデルを渡しています。

 popModel = new GenreModel({genre_name:'Pop',genre_id:'pop'});
 popView = new GenreView ({model:popModel,collection:new PopCol()}); 

これはビューの実装です:

Backbone.View.extend ({
    className:'sect',

    initialize: function ()
    {
        context = this;
        this.collection.fetch ({
            success:function ()
            {
                context.render();
            }
        });     
    },

    render: function ()
    {
        console.log("hello");
        this.$el.html (_.template(view,this.model.toJSON()));
        this.collection.each (function (video) 
        {
            genreLi = new GenreLi ({model:video});
            this.$(this.model.genre_id).append (genreLi.el);
        },this);

        return this;
    },

});

私の問題は、console.log (popView.el) を呼び出すと、次のようになることです。

<div class="sect"></div>
hello 

ビューは読み込まれていませんが、console.log (popView.render.el) を呼び出すと、次のようになります。

hello 
<div class=​"sect">​…​&lt;/div>​
hello 

その後、ビューは適切にレンダリングされます。これを修正するにはどうすればよいですか?

4

1 に答える 1

1

同じジャンルのすべての動画をulliリストに表示しようとしていると思います。要素を取得しているときに、idの前に「#」がないようです。

render: function ()
{
    ...
    this.collection.each (function (video) 
    {
        genreLi = new GenreLi ({model:video});
        // if you have already defined elements by genre id and not within the view's el
        // This is not good as a view should attach new html into dom elements under it 
        $('#'+this.model.genre_id).append (genreLi.el);

        // if you have defined elements by genre id within in the view'w el then
        this.$el.find('#'+this.model.genre_id).append (genreLi.el);

    },this);

    return this;
},
于 2013-03-07T04:20:37.837 に答える