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