Javascript 设置渲染到木偶集合视图中的项目的动画

Javascript 设置渲染到木偶集合视图中的项目的动画,javascript,marionette,Javascript,Marionette,我有一个集合,其中包含表示应用程序导航项的模型。在我的应用程序中,导航位于屏幕的左侧,我希望能够在呈现导航项目时逐个滑入导航项目。导航容器是一个集合视图,导航项目是它的项目视图 在集合视图中,我将appendHtml方法更改为如下所示 appendHtml: function (collectionView, itemView, index) { console.log('APPENDING ITEM VIEW', itemView.el);

我有一个集合,其中包含表示应用程序导航项的模型。在我的应用程序中,导航位于屏幕的左侧,我希望能够在呈现导航项目时逐个滑入导航项目。导航容器是一个集合视图,导航项目是它的项目视图

在集合视图中,我将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后将其滑入,它应该可以工作。不幸的是,这不起作用,导航项目已经出现在屏幕上,没有动画。我在这里做错什么了吗?有人知道为什么这似乎不起作用吗?我想我的应用程序的另一个部分可能有错误,但如果是这样,并且已经修复,那么上面的代码应该工作吗?

也许可以尝试以下方法:

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

这将直接在项目上设置类,然后在CollectionView呈现项目视图时,将其滑入项目视图(如果定义了onRender,则会自动调用onRender,无需其他操作).

但最初呈现集合视图时,
el
未附加到dom,因此他不会看到转换效果。只有在稍后对集合触发add事件时(即在将集合视图附加到dom之后),他才能看到此转换