0

コレクション内の各アイテムのビューをレンダリングしています。これらの各アイテムには、ul に追加しようとしているリストが含まれていますが、他のビューの ul に追加されています。

意見:

    initialize: function(){

    },

    render: function(){
        var current = this.model.toJSON();
        this.$el.html(_.template(cTemplate, current));

        var items = this.model.toJSON().items;
        items.forEach(function(item){
            this.$('.list').append('<li>'+item.attributes.price+'</li>');
        });

        return this;
    }

テンプレート:

<ul class="list"></ul>

this.$('.list') に追加しようとしていますが、これは、各アイテムの価格を現在のビューのテンプレートのクラスにのみ追加していることを意味すると思いました。現在のビューの前にレンダリングされたビューのすべてのリスト クラスに価格が追加されるため、このように参照できないようです。

同じページのすべての同じクラスと、現在のビューのテンプレートからのクラスだけに追加するのをどのように防止するのか疑問に思っています。

4

1 に答える 1

0

ulがこのビュー クラスの場合tagName、単純にこれに追加できます。

items.forEach(function(item){
  this.$el.append('<li>'+item.attributes.price+'</li>');
});

または、ul.list子要素である場合、これを行うことができます

items.forEach(function(item){
  this.$el.find('ul.list').append('<li>'+item.attributes.price+'</li>');
});

: このパターンは、複雑さが増した場合、将来維持できなくなる可能性があります。アイテムに相互作用がある場合は、アイテムごとに個別のビューを作成することを検討できます。

于 2013-05-17T17:11:54.647 に答える