0

私は次のようにバックボーンマリオネットコンポジットビューを持っています。

これが初期化方法です。

initialize: function(options) {

        log.debug("Initialize");
        this.wizard = options.wizard;

        this.model = new Feed({
            id: options.modelid
        });
        this.modelid = options.modelid;
        this.collection = new Similar();

        this.listenTo(this.model, "change", this.onFetch);
        this.listenTo(this.model, "reset", this.onFetch);

        this.collection.fetch({ data: { id: this.modelid }});

        this.model.fetch();
    },

これが onFetch メソッドです

onFetch: function() {
        log.debug("Fetch");

        this.$el.html(this.template(this.model.toJSON()));}

これが追加メソッドです

appendHtml: function(collectionView, itemView, index) {
        log.debug("appendHtml");

        var jsonFeed = itemView.model.toJSON();

        if (this.prevFeed === null || jsonFeed.start !== this.prevFeed.start) {
            var date = new Date(jsonFeed.start);
            collectionView.$(this.itemViewContainer).append('<div class="day-divider c-color box-center" ><h3>' + moment(date).format('DD MMMM') + '</h3></div>');
        }

        collectionView.$(this.itemViewContainer).append(itemView.el);

        this.prevFeed = jsonFeed;
    },

私のコレクションは、html コンテンツを上書きする onFetch 関数によって空になります。これは私のログです:

DEBUG - Initialize
DEBUG - Render
DEBUG - appendHtml
DEBUG - appendHtml
DEBUG - appendHtml
DEBUG - Render
DEBUG - Fetch

これがどのように起こるか考えていますか?どうすれば解決できますか?

4

1 に答える 1

0

onFetch の代わりに onRender を使用しないのはなぜですか? onRender は、レンダリングが完了したときにコンテンツを表示する、既に含まれている関数です。

注: すべてがレンダリングされたときにジョブを実行する onShow を使用することもできます。

于 2013-05-14T20:23:53.773 に答える