Sencha touch 我应该使用哪个事件加载将在Sencha Touch中填充表单的存储?

Sencha touch 我应该使用哪个事件加载将在Sencha Touch中填充表单的存储?,sencha-touch,sencha-touch-2,Sencha Touch,Sencha Touch 2,当视图进入视口时,我希望能够加载存储并将检索到的模型设置到视图中的表单上。但是,我不太确定我应该使用哪个事件来实现此目的 是否应在视图的“绘制”事件中执行此操作,视图是否应激发回控制器,然后填充视图,或者是否有其他建议的方法执行此操作 我目前认为: listeners: { painted: function () { var contactStore = Ext.getStore("theContactDetailsStore");

当视图进入视口时,我希望能够加载存储并将检索到的模型设置到视图中的表单上。但是,我不太确定我应该使用哪个事件来实现此目的

是否应在视图的“绘制”事件中执行此操作,视图是否应激发回控制器,然后填充视图,或者是否有其他建议的方法执行此操作

我目前认为:

  listeners: {
        painted: function () {
            var contactStore = Ext.getStore("theContactDetailsStore");

             contactStore.load({
                    scope: this,
                    callback: function (record, operation, success) {
                        if (success && record[0]) {                            
                            this.setRecord(record[0]);                                     
                        }
                    }
                });
       }
   }

绘制的事件应用于执行一些低级DOM操作,如固定元素大小、位置等。 这就是我的建议:

  • 首先加载应用商店,最后在加载之前用“加载…”消息屏蔽视口,这样,如果操作需要时间,用户就不会觉得应用程序崩溃了
  • 在store“load”回调函数中,显示表单视图,将所需的数据模型作为“record”配置参数传递
通过这种方式,您的表格将立即显示并填充您的记录数据


PS:如果在加载存储之前屏蔽了视口,请记住在显示表单之前在“加载”回调中取消屏蔽它。

有两种方法可以处理此问题:

  • 首先创建视图,并在其初始化函数中创建和加载存储。通过从initialize触发相应事件,创建加载的代码可以很容易地成为控制器的一部分。这可能看起来很难看,因为如果没有数据,您的视图可能看起来不太好,但这会更快,因此请注意屏蔽和取消屏蔽(在存储的加载回调中)视图

  • 首先创建存储,并在其加载回调中使用数据(存储记录等)触发事件,该事件将使用该数据创建视图。这在一开始看起来很慢,因为在加载存储之前,您不会看到视图的任何部分


  • 好的,很好,但是我仍然不清楚商店的负载应该发生在哪里。我应该听什么节目?在控制器或视图中的何处?只需调用store“load”方法,设置回调函数即可显示表单。从控制器上执行此操作。看一下文档:好的,我理解load方法回调。我在问题中添加了一个代码示例。当前另一个控制器显示视图,我使用视图中的绘制事件来加载。我不喜欢视图侦听器中的代码,也不想在控制器中加载存储,因为控制器用于不同的视图。希望你能理解我的困境。。。