任何人都可以解释Sencha Touch控制器如何与相关视图相结合

时间:2014-06-04 12:52:10

标签: extjs sencha-touch sencha-touch-2

我总是想知道

  1. Sencha Touch 2如何知道哪个控制器先运行,哪一个是下一个

  2. ST2如何知道哪个控制器负责哪个视图。

  3. 我们可以在一个视图上设置多个控制器,如果是,如何连接它们?

  4. 我们可以让一个控制器控制多个视图吗?如果是的话,事件是如何流动的?

  5. 如何将view1与controller1,......,viewX与controllerX连接起来。

  6. 谢谢。

2 个答案:

答案 0 :(得分:3)

  • Re。:1 - 控制器初始化,如果您的意思是“运行”,按照它们在应用程序controllers:[]数组中列出的顺序。另请参阅ext application startup sequence
  • Re。:2 - 控制器只是听取来自视图的事件。侦听器安装在控制器的init方法
  • 回复:3技术上是 - 多个控制器可以收听相同视图的事件 - 但这不是一个好习惯。这就像有更多的老板
  • 回复:4是,并且通常一个控制器控制多个视图
  • 回复:5见application architecture

答案 1 :(得分:2)

我的回答是指Sencha Touch 2.3.1。

除了您通过控制器http://docs.sencha.com/touch/2.3.1/#!/api/Ext.app.Controllerrefscontrol属性定义的关系之外,没有真正的“耦合”。

  

应用程序使用的所有控制器都在Application的Ext.app.Application.controllers配置中指定。应用程序自动实例化每个Controller并保留对每个

的引用
  1. 我猜包含控制器的顺序是由app.js的controllers属性定义的(通过在init中放置一些console.log()来验证是否相当容易每个控制器的方法)。

  2. 对于View,“负责”没有这样的关系,控制器引用了Views,就是全部。值得一提的是,控制器可能需要views(以及storesmodels),但这与包装阶段的包含有关,在运行时没有与这些组件“绑定”。

  3. 这是可能的,只需定义两个控制器同时具有对同一视图的引用。无论如何,这将是糟糕的,因为它会在多个地方传播相同视图的逻辑。

  4. 是的,这是可能的。例如,我用来编写一个控制器来管理总是一起使用的一组简单视图(例如向导)。您只需在单个控制器中拥有这些视图事件的所有处理程序。

  5. 鼓励的方式是通过控制器http://docs.sencha.com/touch/2.3.1/#!/api/Ext.app.Controllerrefscontrol属性。

  6. 总之,在我看来,控制器更像是一个工具,供开发人员 组织代码,有意义地提高可维护性,而不是在MVC中严格实现MVC。框架。