Sencha:在MVC结构之外使用Ext.Router

时间:2011-08-27 18:47:36

标签: javascript sencha-touch

我正在研究Sencha Touch应用程序,该应用程序目前尚未使用控制器。我想使用Ext.Router将访问者带到面板中的特定卡片。我已经看到了可以在不使用严格的MVC设置的情况下使用Ext.Router的建议。但API中的示例如下所示(请参阅:http://dev.sencha.com/deploy/touch/docs/?class=Ext.Router):

map.connect('dashboard', {controller: 'home', action: 'index'});

例如,有没有办法将函数放入map.connect,以便在面板中显示特定的卡?

第二个问题:是否值得尝试与此搏斗,还是更容易用控制器更新应用程序? (在开发的早期阶段,它是一个非常小的应用程序,如果我们走这条路线,可能会有3个控制器。)

2 个答案:

答案 0 :(得分:1)

我有同样的问题,并且一心想不使用控制器,因为我没有时间重构我给出的代码。就像所选的帖子不情愿地建议我使用Ext.History类。如果您在onReady函数中调用它,它将使用URL激活myPanel面板:www.mypage.com/#my-url-slug

function initialiseHistory() {
  Ext.History.init();
  urlToken = Ext.History.getToken();
  if(urlToken == 'my-url-slug') {
      Ext.getCmp('tabpanel').setActiveItem('myPanel', false);
  }
}

肮脏我知道..但做了这个工作。

答案 1 :(得分:0)

路由器有点嫁给了控制器,并没有真正提供一种方法来做你所要求的。如果您要做的是显示基于URL哈希的卡片,那么您与控制器一起使用会导致其无法实现...如果您因为某种原因而不愿意使用控制器,那么唯一的问题就是大脑是Ext.History在url hash更改时触发'change'事件,你可以监听那个事件并采取我认为的适当行动。