Sencha Touch MVC - 推荐通过控制器传递数据的方法?

lar*_*ryq 10 extjs sencha-touch

我正在使用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
                    });
                }
Run Code Online (Sandbox Code Playgroud)

我正在挣扎,你可以看到,尝试在控制器中使用'id'和'data'配置选项,试图通过任何必要的手段将数据传送到地图面板.

我不一定需要针对这个特定问题的答案,但是如果你有关于如何一般地做这个的建议 - 基本上是将数据从一个屏幕传递到下一个屏幕的最佳实践.

如果它有帮助,我将我的应用程序结构基于Pearce先生在Sencha的一个很好的MVC教程:

http://www.sencha.com/learn/Tutorial:A_Sencha_Touch_MVC_application_with_PhoneGap

非常感谢!

Jas*_*tas 6

我认为你在Ext.Dispatch的正确轨道上.您在Dispatch选项对象中添加的参数将传递给控制器​​上的action方法.

例如

showMap: function(options){ 
               var id = options.id; 
               //load data based on the id and pass it to your map
               ...
         }
Run Code Online (Sandbox Code Playgroud)

我还认为你应该在Dispatch选项对象上设置historyUrl,这样如果他们刷新页面,id仍然会被发送到控制器动作.