- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我是 Extjs 的新手,在阅读了一些关于 Extjs MVC 模式的教程和博客之后,我不清楚如何在 extjs 平台上构建一个复杂的应用程序(比如 10 - 15 个页面导航)。
来自 sencha 论坛,建议所有 Controller 都需要在 app.js 中预先定义(因为与加载 DOM 的 UI 相比,预先加载 Controller 不会影响性能。请注意,这是由sencha 论坛管理员)。
通过上述方法,我有几个问题:
Controller 何时被实例化?它们是否都在应用加载时加载和实例化,并一直监听其中定义的事件直到应用的生命周期?
在 Controller 类中定义 Models[]、Stores[] 和 Views[] 是什么意思?它们何时加载和实例化?
页面导航如何与 Controller 协同工作?如果导航到新页面只是转换为 getParentContainer.remove(componentX) 和 getParentContainer.add(componentY),那么 Controller 的用途仅仅是一个处理事件的文件?
Controller 有任何作用域(实例化 > 销毁)吗?如果不是,如何创建和销毁多个实例,以便我的操作不会被错误的实例监听(我看到一些博客提到 Controller 大多是单例的)?
有人可以解释一下吗?任何示例/插图都会有很大帮助。
谢谢
最佳答案
在 Ext JS 中,Ext.app.Controller 类(开箱即用)随应用程序的初始化而实例化。事实上, Controller 的 init() 在应用程序本身的 launch() 之前被调用。所以,是的, Controller 是“lifers”,从应用程序启动的那一刻起在应用程序的整个生命周期中监听。 有动态创建和销毁 Controller 的方法,但这需要自定义实现。
然而,在 Ext JS 5 中,引入了 ViewController 的概念。它扩展了与 Ext.app.Controller 相同的基础 (Ext.app.BaseController),但与上面不同的是,ViewController 与其绑定(bind)的 View 实例一起创建和销毁。这是由框架自动处理的——无需自定义实现即可工作。
关于模型:[]、存储:[]和 View :[],这些基本上是 Controller 的 requires(),指示它确保加载这些类。这些约定只是从它们的特定命名空间(例如,AppName.view、AppName.store 等)要求这些类的简写方式。对于 View 和存储,此约定还将为所需的类生成 getter。
关于导航,由您决定。您可以通过多种方式创建 Ext JS 应用程序。你可以做“单页”应用程序,其中导航可能与你提到的非常相似(我的很多人都这样做)。您还可以创建多页面应用程序,这些应用程序可以提供更传统的网站页面到页面的感觉,但根据每个页面的需要为每个页面利用通用代码和类。
最后,关于监听器碰撞的问题,答案是“视情况而定”。如果你使用的是 Ext JS 4,你只有有“lifer” Controller ,所以避免监听器中的冲突是非常了解你在监听器中使用的选择器的问题( ) 或 control() 部分,并确保您没有复制监听器(通过显式复制或过于广泛的选择器),除非这是您想要做的。然而,在 Ext JS 5 中,ViewController 的概念或多或少消除了这个问题,因为 ViewController 的“监听”域被限制在它所绑定(bind)的 View 的实例中。
就示例而言,我肯定会鼓励您从 Ext JS 5 的文档开始:
http://docs.sencha.com/extjs/5.0/whats_new/5.0/whats_new.html
http://docs.sencha.com/extjs/5.0.1/
“新功能”文档有一些非常棒的架构讨论,深入探讨了这些概念的细节,比 SO 上可行的要多得多。
关于javascript - Controller 如何在 Extjs 应用程序中与 MVC 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26039486/
我带着这么简单的问题来到这里,但找不到它......无论如何,你可以在下面看到代码。这是里面有项目的面板。我想要的是更改名称为“intIP”的文本字段的值,它位于面板内部,位于面板内部。我怎样才能做到
如何在 ExtJS 设计中显示面包屑功能。 我正在使用带边框布局的面板,我想在面板顶部设计面包屑功能 请寄给我一些 sample ..... 提前致谢 最佳答案 我想到了两个解决方案。 使用面板标题
你好 如何在 ExtJS 中设计嵌套网格 请提供一些示例(如何在 ExtJS GridPanel 中使用 RowExpander) 最佳答案 尝试这样的事情: //Create the Row Ex
我有类似的东西 Ext.define('HS.controller.Utility', { statics : { state : 'Oklahoma' } }); 现在我想
我有一列checkcolumn类型来启用切换 bool 值。我希望能够一次为该值切换所有行。理想情况下,我可以在checkcolumn header 中添加一个复选框,并监听更改。那可能吗? 我想指出
在我的 extjs 项目中,我有一些 panel我要展示的toolbar在 mouseEnter事件。这工作正常。但是当我用新的 html 更新面板时,mouseenter事件不起作用。 panel.
如何在 ExtJs Combo 中显示图标和显示字段。extjs 组合是否有任何扩展。请提供一些 sample 。 最佳答案 对于 ExtJS4,将带有 getInnerTpl 方法的 listCon
我有用于网格和柱状图的存储,但值是字符串形式的(服务器端格式化的数量,不能在客户端完成)。由于字符串格式的数量,网格没有被呈现。解决方案可能会使用网格和图表所需的数据类型制作单独的存储。但这是低效的方
我正在一个页面上有一个GridPanel的项目中工作。该面板可以显示任意数量的行,并且我设置了autoHeight属性,这将导致GridPanel扩展以适合行数。我现在想要一个水平滚动条,因为在某些分
我有一个网格,它允许用户通过编辑行来输入数字。我希望数字支持 4 位小数,但它只支持 2 位。我想出了如何显示 4 位小数,但它没有注册超过 2 位小数。 因此,如果用户输入 1000.1111,结果
我这里有以下网格: Ext.define('AM.view.user.List', { extend: 'Ext.grid.Panel', alias: 'widget.userlis
我正在将我的应用程序从ExtJs 3迁移到4版本。 我的formPanel上有几个组合框,以前我用过hiddenName 以及所有的stuff提交valueField而不是displayField。
我在一个面板中创建了多个项目。现在我想以“适合”布局显示此面板。我不想修复该面板的高度和宽度。我知道“适合”布局只允许显示一项。 这里可以使用“适合”布局吗?或者有什么替代方案可以实现这一目标吗? 谢
我需要将数据库值加载到组合框中。我不明白,为什么值没有加载到组合框中。通过 firebug,打印出 console.log 值。这是我的组合框代码, var groups = new Ext.data
这是将筛选器动态添加到gridpanel底部工具栏的正确语法吗? this.Grid.getBottomToolbar().plugins=[filters]; 当我这样做时没有错误。但是,它的行为并
我正在使用ExtJS v4.0。 在客户端和服务器端之间维护日期格式确实令人困惑。 用户需要自己的输入格式,但是服务器通常要求提交为一种标准格式。 它应该是ExtJS中的内置实现,但不是。 我已经阅读
我的问题对你来说很容易,但我负担不起..我从行中获取数据并显示在其他面板的字段中我的目标是编辑这些数据并在网格中显示编辑后的数据,请给我一些建议,我知道它需要 commit() 函数但是.. 我的代码
我是 ExtJS 的新手。我遵循了一个教程,目的是在网格上创建分页。代码很简单,我发现它很可疑......结果,分页工具栏在那里,但在第一次加载时仍然显示所有数据。这是我在 View 文件中的代码:
听说EXTJS是一个独立于浏览器的javascript库。 extjs 如何使自己独立于浏览器?当我打开库类时,我没有看到任何代码: 如果(IE)//这样做;else if (FF)//做其他事情;
我有一个类的实例(例如 Ext.data.Model)myRecord 并且需要调用它的静态方法之一(例如 getFields())。我该怎么做? 最佳答案 您还可以使用 self获取类的属性: my
我是一名优秀的程序员,十分优秀!