pushstate导航最困难的事情之一是处理和照顾不同页面中的所有Javascript状态/事件。
Barba.js提供了一个很好的帮手,可以帮助你将一个Container与一个View关联起来。
所有的transitions都需要扩展Barba.BaseView对象。
要将一个View与一个Container关联起来,一个公共名称空间就足够了:
<div class="barba-container" data-namespace="homepage">
var Homepage = Barba.BaseView.extend({
namespace: 'homepage',
onEnter: function() {
// The new Container is ready and attached to the DOM.
},
onEnterCompleted: function() {
// The Transition has just finished.
},
onLeave: function() {
// A new Transition toward a new page has just started.
},
onLeaveCompleted: function() {
// The Container has just been removed from the DOM.
}
});
// Don't forget to init the view!
Homepage.init();
在调用Pjax.start()之前,建议先调用 Views的.init() - 通过这种方式,Pjax.start()将为当前view发出onEnter()和onEnterCompleted()。
如果您不喜欢data-namespace,您可以更改它,请参阅Dom API部分
网友评论