2011-06-11 111 views
6

我试图围绕Sencha Touch的MVC框架进行思考,但我找到了几种不同的方法。在其中一个发现here中,有一种方法来构建SenchaCon 2010上展示的Sencha Touch应用程序。它具有由Sencha Touch员工增加的重量,但已有几个月的历史了。在Sencha Touch MVC的其他更新的帖子中,他们有教程(如here以及Manning的MEAP Sencha In Action by Jay Garcia),这些教程似乎依赖Ext.Dispatch在视图中调用特定的控制器方法,将其他元素传递给控制器​​,这使得视图控制器可以识别。Sencha Touch MVC最佳实践

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

回答

3

我建议让你的控制器查看感知。当控制器接收到调度事件,你应该有类似如下的内容:

this.controllerViewOne = this.controllerViewOne 
         || this.render({ 
           xtype: 'panel', 
           listeners: { 
             onMajorUIAction : function(params){ 
              Ext.Dispatch({ 
               controller : 'ProperController', 
               action  : 'ProperAction', 
               historyUrl : 'ProperHistoryUrl', 
               params : params 
              }); 
             } 
           } 
          }); 

这具有在一个空间中所有为每个控制器的意见“主”听众的好处。这也意味着重新使用其他控制器的视图变得更容易。

您的观点应该都有听众帮助抽象个别组件及其事件/听众的复杂性。

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

+0

只要你一定要打破你的应用程序分为多个控制器此次荣获”不会导致控制器大量膨胀。 – Ballsacian1 2011-07-02 20:55:10

+0

感谢您的信息。我同意让控制器视图识别,因为他们正在监听事件,这很有意义。我也听说如果Touch遵循Ext JS,Ext.dispatch()可能会消失:[link](http://www.sencha.com/forum/showthread.php?137166-Sencha-Touch-MVC-Best-实践) – 2011-07-06 19:06:52

6

我有类似的问题。 Sencha为您的视图组件实例自动创建大量的getter。这很混乱。

我已经采取了Sencha Touch 2.0并将一个完整的MVC脚手架应用作为例子。我将它从ExtJS 4.0 MVC体系结构中解放出来。这将与Sencha Touch 2.0开发人员预览版一同使用,并为您节省大量时间。

https://github.com/FrancisShanahan/SenchaTouch2MVCHelloworld

为了回答您的具体问题,最新的ExtJS的4.0 MVC架构设置监听控制器的初始化事件中的视图组件的实例。下面是从已链接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

+0

谢谢,我会看看! – 2011-10-24 18:35:53

+0

请注意,这已在sencha2-rc2(2012年2月)中弃用。如果你在控制器中声明视图,你会得到一个警告,你应该在App文件中声明所有的视图。 – widged 2012-03-04 10:06:47

+0

谢谢,配合;我喜欢Sencha 2迄今为止所看到的。 – 2012-03-08 20:30:31