Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sencha touch Sencha Touch MVC最佳实践_Sencha Touch_Extjs - Fatal编程技术网

Sencha touch Sencha Touch MVC最佳实践

Sencha touch Sencha Touch MVC最佳实践,sencha-touch,extjs,Sencha Touch,Extjs,我试图将我的想法围绕Sencha Touch的MVC框架,但我发现了两种不同的方法。在其中一个例子中,发现了一种构建Sencha Touch应用程序的方法,该应用程序在SenchaCon 2010上展示。它有着被Sencha Touch的一名员工所赋予的额外重量,但它已经有好几个月的历史了。在Sencha Touch MVC上的其他最新帖子中,他们有教程(如Jay Garcia的Manning的MEAP Sencha In Action),这些教程似乎依赖于视图中的Ext.Dispatch调用特

我试图将我的想法围绕Sencha Touch的MVC框架,但我发现了两种不同的方法。在其中一个例子中,发现了一种构建Sencha Touch应用程序的方法,该应用程序在SenchaCon 2010上展示。它有着被Sencha Touch的一名员工所赋予的额外重量,但它已经有好几个月的历史了。在Sencha Touch MVC上的其他最新帖子中,他们有教程(如Jay Garcia的Manning的MEAP Sencha In Action),这些教程似乎依赖于视图中的Ext.Dispatch调用特定的控制器方法,将附加元素传递给控制器,从而使视图控制器能够感知


我的问题是,哪一种被认为是构建Sench Touch MVC应用程序的最佳实践?

我建议让您的控制器能够感知视图。当控制器接收到调度事件时,您应该具有类似以下内容:

this.controllerViewOne = this.controllerViewOne
                         || this.render({
                                 xtype: 'panel',
                                 listeners: {
                                      onMajorUIAction : function(params){
                                           Ext.Dispatch({ 
                                                controller : 'ProperController',
                                                action     : 'ProperAction',
                                                historyUrl : 'ProperHistoryUrl',
                                                params : params
                                           });
                                      }
                                 }
                            });
这样做的另一个好处是,每个控制器视图的所有“主”侦听器都位于一个空间中。这也意味着为其他控制器重用视图变得更容易

您的视图都应该具有侦听器,这些侦听器有助于抽象各个组件及其事件/侦听器的复杂性


我使用UI管理器进行全局UI更改,如隐藏/显示主工具栏或显示后退按钮。

我也有类似的问题。Sencha自动化了视图组件实例的大量getter创建。这很令人困惑

我以SenchaTouch2.0为例,构建了一个完整的MVC脚手架应用程序。我基于ExtJS 4.0 MVC体系结构。这将与Sencha Touch 2.0开发者预览一起开箱即用,应该会为您节省大量时间

为了回答您的特定问题,最新的ExtJS 4.0 MVC体系结构在控制器的init事件中设置了视图组件实例的侦听器。下面是一个取自已链接的github项目的示例:

Ext.define('HelloWorld.controller.Home', {
    extend: 'Ext.app.Controller',   
    views: ['Home', 'SimpleList'],
    .. etc... 
    init: function() {
        // Start listening for events on views
        this.control({
                 // example of listening to *all* button taps
                 'button': { 'tap': function () {
            console.log('Every button says Hello world');
        } 
    ...
如果有帮助,请告诉我, 当做
-fs

只要您确保将应用程序拆分为多个控制器,就不会导致控制器太大。谢谢您提供的信息。我同意让控制者意识到他们正在监听事件是很有意义的。我还听说,如果Touch跟随Ext JS,Ext.dispatch()可能会消失:请注意,sencha2-rc2(2012年2月)中不推荐使用这种方法。如果您在控制器中声明视图,则会收到一条警告,提示您应在应用程序文件中声明所有视图;我喜欢目前为止我在Sencha 2中看到的东西。