ExtJS4 MVC懒惰加载
ExtJS4 MVC Lazy Loading
帮助!我有一个ExtJS 4.2 MVC应用程序,它将包含大量不同的视图。然而,每个用户只能访问整个集合的一小部分。显然,我不想为每个用户加载所有的视图!此外,每个"允许"的视图都应该在用户登录后加载。
在过去(MVC之前(,我使用Ext.create((来动态加载我的.js类文件。然而,我正在尝试使用MVC设计模式,我在网上读到的所有内容都表明,这似乎是ExtJS 4.2 MVC的限制。这是真的吗?以下是我迄今为止所做的尝试。
首先,自定义视图定义(一个基本的容器示例(:
Ext.define('My.custom.TestView', {
extend: 'Ext.container.Container',
alias: 'widget.myCustomTestView',
html: 'Test',
initComponent: function() {
this.callParent(arguments);
}
});
第二,试图加载/实例化自定义视图的控制器定义:
Ext.define('My.custom.TestController', {
extend: 'Ext.app.Controller',
// Empty array because I want to
// add views during run-time.
views: [
],
init: function () {
// Attempt #1: This produces an error.
this.getView('My.custom.TestView').create();
// Attempt #2: This returns null.
Ext.widget('myCustomTestView');
// Attempt #3: This appears it might work, but it's ugly!
Ext.create('My.custom.TestView');
this.getView('My.custom.TestView').create();
}
});
虽然#3是唯一一个没有给出错误的,但在我看来并不正确。有什么建议/意见吗?
Ext.create((会导致同步加载,因此它实际上会检查视图的依赖js文件是否已加载,如果不是,那么它会同步加载js文件,并停止执行代码,直到Ext.Loader加载并初始化js。然后,您可以在类上获得view((.create((,因为您的视图类现在可以在Ext.中使用
对于其他两个:
-
会产生一个错误,因为它基于My.custom.TestView的谓词已经被加载,而事实并非如此,因此它无法在加载的类中找到类的定义来创建它的实例。
-
返回null很可能是因为Ext.widget的实现方式,以便保持对Ext.widget[(]的调用,该调用为尚未加载的类指定一个小部件名称,以防止破坏您的应用程序。
1和2与Ext.create((的不同之处在于,它们不调用Ext.Loader来解析类文件,并且如果未发现该类文件已在内部加载到Ext中,则将其加载。它们只是对已经加载的代码执行操作,并且在调用它们时在应用程序中可用。
值得在这里阅读Exts文档中的Ext.Loaderhttp://docs.sencha.com/extjs/4.2.1/#/api/Ext.Loader
- 预加载图像image.onload脚本MVC
- 在 Ext JS 4 MVC 应用中,什么应该负责加载商店
- 阻止MVC视图中的C#代码在加载时执行
- ASP.NET MVC路由-动态加载.js脚本
- 谷歌将部分页面加载后自动完成不起作用 ASP.Net MVC
- 模式视图重新加载内容(启动MVC ASP.NET)
- Javascript客户端从ASP.NET MVC后端延迟加载模型
- 在ASP.Net web窗体/MVC中动态加载和添加字段
- 正在加载新的Javascript,但正在调用旧的Javascript.MVC
- 我可以在 MVC 3.0 中获得一个工作 Asp.NET jsTree 4 示例,并异步加载节点
- 从ASP MVC异步加载Angularjs(AJAX)并执行它们
- 具有资源视图的完整日历在 ASP.NET MVC 中不起作用,加载时 - 0x800a01bd - javaScript
- 引导选项卡上的 MVC 单击重新加载控制器并刷新
- 动态加载视图,telerik mvc
- 在春季 MVC 中加载 JS 文件
- 如何使用 javascript 在 MVC 项目中加载视图,然后在其中加载部分视图
- 如何在 MVC 4 中将不同的部分视图加载到引导模式
- 如何在 jsp 视图中加载 extjs 5 应用程序 - Spring MVC
- 在Visual Studio 2015中加载MVC 5项目时,未定义$
- 如何通过AJAX加载MVC 4应用程序的第一页?