我正在使用 Sencha Touch 作为移动应用程序,并使用其中的 MVC 功能。我非常喜欢 Sencha,但在使用控制器将数据从一个“屏幕”传递到下一个“屏幕”时遇到了一些麻烦。
有一个与许多 Sencha 小部件关联的“记录”属性——例如,指示 Ext.list 中当前选定的记录——并且由于某种原因,我无法完全了解如何从一个 Ext.Panel 到另一个。
例如,我有一个 Ext.Panel,其中包含来自 Ext.Store 的数据,包括一个地址。我有另一个可以显示地图的 Ext.Panel。我需要将此地址传递到地图面板,但不知道如何传递。这是我在第一个面板中尝试的内容:
listeners: {
'tap': function () {
Ext.dispatch({
controller: app.controllers.establishments,
action: 'showMap',
id: record.getId(),
data: record.data
});
}
正如您所看到的,我有点挣扎,尝试在控制器中使用“id”和“data”配置选项,以尝试通过任何必要的方式将数据获取到地图面板。
我不一定需要这个特定问题的答案,但如果您对如何执行此操作有一般建议 - 基本上是将数据从一个屏幕传递到下一个屏幕的最佳实践。
如果有帮助的话,我的应用程序结构将基于 Sencha 的 Pearce 先生提供的精彩 MVC 教程:
http://www.sencha.com/learn/Tutorial:A_Sencha_Touch_MVC_application_with_PhoneGap
非常感谢!
我认为 Ext.Dispatch 的方向是正确的。您在调度选项对象中添加的参数将传递到控制器上的操作方法。
E.g.
showMap: function(options){
var id = options.id;
//load data based on the id and pass it to your map
...
}
我还认为您应该在 Dispatch options 对象上设置historyUrl,这样如果他们刷新页面,id 仍然会被发送到控制器操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)