0

アプリのナビゲーション項目を表すモデルを含むコレクションがあります。私のアプリでは、ナビゲーションは画面の左側にあり、ナビゲーション項目がレンダリングされるたびに 1 つずつスライドできるようにしたいと考えています。ナビゲーション コンテナーはコレクション ビューであり、ナビゲーション アイテムはそのアイテム ビューです。

コレクション ビューで、appendHtmlメソッドを次のように変更しました。

    appendHtml: function (collectionView, itemView, index) {
            console.log('APPENDING ITEM VIEW', itemView.el);
            itemView.assignNewlyCreated();
            collectionView.$el.append(itemView.el);
            itemView.slideIn();
    },

アイテム ビューには、次の関連するメソッドがあります。

    // Label the dom element as newly created
    assignNewlyCreated: function () {
        this.$el.addClass('newly-created');
    },

    // Slide in the item.
    slideIn: function () {
        console.log('sliding in element', this.el);
        this.$el.animate({left: 0});
    }

新しく作成したクラスはアイテムを画面から左に押し出すスタイルなので、このように追加してDOMに入ったらスライドインすればうまくいくはずだと思っていました。残念ながら、これは機能しておらず、ナビゲーション アイテムは既にアニメーションなしで画面に表示されています。私はここで何か間違ったことをしていますか?これが機能していないように見える理由を誰か知っていますか? アプリの別の部分でエラーが発生している可能性があると考えていますが、それが事実であり、それが修正された場合、上記のコードは機能しますか?

4

1 に答える 1

0

多分このようなことを試してください:

MyItemView = Backbone.Marionette.extend({
  template: "#template",
  className: "newly-created",
  onRender: function(){
    this.$el.animate({left: 0});
  }
});

これにより、アイテムにクラスが直接設定され、CollectionView によってレンダリングされるときにアイテム ビューがスライドされます (onRender は、定義されている場合に自動的に呼び出されます。他に行うことはありません)。

于 2013-05-06T07:34:12.000 に答える