当我离开页面(关闭视图/布局)并在同一区域打开新页面时,是否有一种方便的方法来添加效果?(有点像淡入淡出效果)
5 回答
Marionette 区域有一个方法称为open
,默认情况下只需将旧视图的 HTML 替换为新视图。你可以重写这个方法来做任何你喜欢的动画。从区域文档:
设置视图的el
附加方式
如果您需要在通过区域显示视图时更改视图附加到 DOM 的方式,请覆盖该open
区域的方法。此方法接收一个参数 - 要显示的视图。
默认实现open
是:
Marionette.Region.prototype.open = function(view){
this.$el.html(view.el);
}
这将用视图的
el
/ 内容替换区域的内容。但是,您可以根据需要更改为任何内容,以促进过渡效果等。
Marionette.Region.prototype.open = function(view){
this.$el.hide();
this.$el.html(view.el);
this.$el.slideDown("fast");
}
这个例子将导致视图从区域的顶部向下滑动,而不是仅仅出现在原地。
这似乎对我有用:
this.views = {
messageItem: Marionette.ItemView.extend({
template: Handlebars.templates.messaging_item,
tagName: "li",
className: "messaging-item",
render: function(){
this.$el.html(this.template(this.model.attributes));
this.$el.hide();
},
onShow: function(){
this.$el.slideDown(800);
}
})
};
您可以覆盖close
视图上的函数,执行以下操作:
close: function () {
// fancy fade-out effects
Backbone.Marionette.View.prototype.close.apply(this, arguments);
}
render
并对你的函数做类似的事情。
对于未来的用户,人们可以在木偶中使用我的插件来支持过渡。
https://github.com/saqibshakil/Marionette.TransitionRegion/
我使用 css3 过渡,因为它们比 jquery 动画具有更多的硬件支持。不利的一面是使用它会使代码异步,所以要小心。
我认为这可能对你有用。
以下木偶插件添加了 4 种过渡。可以轻松添加更多过渡类型。
基本上不是使用 yourRegion.show(view)... 你现在可以使用 yourRegion.showAnimated(view, {animationType: 'yourAnimation'});
它非常易于使用。
https://github.com/marcinkrysiak1979/marionette.showAnimated
有关更多信息,请参阅 github 上的文档