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