Sencha Touch MVC最佳实践
我试图围绕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应用程序的最佳实践?
我建议让你的控制器查看感知。当控制器接收到调度事件,你应该有类似如下的内容:
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。这很混乱。
我已经采取了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
谢谢,我会看看! – 2011-10-24 18:35:53
请注意,这已在sencha2-rc2(2012年2月)中弃用。如果你在控制器中声明视图,你会得到一个警告,你应该在App文件中声明所有的视图。 – widged 2012-03-04 10:06:47
谢谢,配合;我喜欢Sencha 2迄今为止所看到的。 – 2012-03-08 20:30:31
只要你一定要打破你的应用程序分为多个控制器此次荣获”不会导致控制器大量膨胀。 – Ballsacian1 2011-07-02 20:55:10
感谢您的信息。我同意让控制器视图识别,因为他们正在监听事件,这很有意义。我也听说如果Touch遵循Ext JS,Ext.dispatch()可能会消失:[link](http://www.sencha.com/forum/showthread.php?137166-Sencha-Touch-MVC-Best-实践) – 2011-07-06 19:06:52