我应该使用哪个事件来加载将在Sencha Touch中填充表单的商店?

时间:2012-12-29 13:52:58

标签: sencha-touch sencha-touch-2

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

如果这是在视图的'Painted'事件中完成的,那么视图是否应该回到控制器然后填充视图,还是有其他推荐的方法呢?

目前在我看来有这个:

  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]);                                     
                        }
                    }
                });
       }
   }

2 个答案:

答案 0 :(得分:0)

绘制的事件应该用于执行一些低级别的DOM操作,比如修复元素的大小,位置等。 我建议你这样做:

  • 首先加载商店,最后使用“正在加载...”消息屏蔽视口,这样如果操作需要时间,则用户不会觉得应用程序崩溃。
  • 在商店“load”回调中显示您的表单视图将所需数据模型作为“记录”配置参数传递。

通过这种方式,您的表单将立即显示为您的记录数据。

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

答案 1 :(得分:0)

有两种方法可以解决这个问题:

  1. 首先创建视图并在其初始化函数create&加载商店。通过从初始化触发相应的事件,用于创建加载的代码可以很容易地成为控制器的一部分。这可能看起来很难看,因为没有数据你的视图可能看起来不太好,但是这样会更快,所以请注意屏蔽&取消屏蔽(在商店的加载回调中)视图。

  2. 首先创建您的商店,并在其加载回调中使用数据(商店记录等)激活事件,该数据将使用该数据创建视图。这最初看起来很慢,因为在加载商店之前你不会看到任何视图部分。