过去,我开发了大型extjs单页应用程序。许多用户因无法使用"后退"或"Fwd"按钮或重新加载页面而感到沮丧。我还想警告用户,如果他们在没有完成工作流的情况下离开页面,并使用户能够直接访问特定视图。
对于下一个应用程序,我正在考虑使用Codeigniter php MVC框架。 可能类似于此示例。 我在思考导航时陷入了困境。 如果我为每个视图加载 ExtJ,这是一个显着的减速。如何最好地解决这个问题?
看看 Ext.History 类(Ext.util.History on Ext4)。有了它,您可以注册侦听器以更改哈希:
Ext.History.on('change', function( token ) {
console.log('token changed to: ', token);
});
Ext.History 单例包括 forward() 和 back() 方法,用于从客户端代码中触发导航。
通过仅更改 URL 的哈希部分,浏览器将保持在同一页面上,从而消除了重新加载 Ext 库的需要。
我不能说这将如何与您的PHP框架集成。我不熟悉CodeIgniter,您的示例链接转到死页。
另外,请注意历史记录的警告,因为在 Ext3 下,至少它可能会给您带来较新浏览器的问题。如果是这种情况,另一种方法是使用"hashchange"浏览器事件编写自己的类似历史记录的解决方案,如本答案所示。