当视图进入视口时,我希望能够加载商店并将检索到的模型设置到视图中的表单上。但是,我不太确定我应该为此目的使用哪个事件。
如果这是在视图的'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]);
}
}
});
}
}
答案 0 :(得分:0)
绘制的事件应该用于执行一些低级别的DOM操作,比如修复元素的大小,位置等。 我建议你这样做:
通过这种方式,您的表单将立即显示为您的记录数据。
PS:如果您在加载商店之前屏蔽了视口,请记得在显示表单之前在“加载”回调中取消屏蔽它。
答案 1 :(得分:0)
有两种方法可以解决这个问题:
首先创建视图并在其初始化函数create&加载商店。通过从初始化触发相应的事件,用于创建加载的代码可以很容易地成为控制器的一部分。这可能看起来很难看,因为没有数据你的视图可能看起来不太好,但是这样会更快,所以请注意屏蔽&取消屏蔽(在商店的加载回调中)视图。
首先创建您的商店,并在其加载回调中使用数据(商店记录等)激活事件,该数据将使用该数据创建视图。这最初看起来很慢,因为在加载商店之前你不会看到任何视图部分。