我正试图围绕Sencha Touch的MVC框架,但我找到了几种不同的方法。在其中一个,发现here,有一种方法来构建在SenchaCon 2010上呈现的Sencha Touch应用程序。它有一个由Sencha Touch员工增加的重量,但它已经有几个月了。在Sencha Touch MVC的其他最近的帖子中,他们有教程(例如here,以及Jay Garcia的Manning的MEAP Sencha In Action ),它们似乎依赖于Ext.Dispatch在视图中调用特定的控制器方法,将其他元素传递给控制器,这使得视图控制器可以识别。
我的问题是,这被认为是构建Sench Touch MVC应用程序的最佳做法吗?
答案 0 :(得分: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架构会在控制器的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
答案 1 :(得分: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更改,例如隐藏/显示主工具栏或显示后退按钮。