Heys Guys。
我有这个错误已经错过了我几个小时了。我设法找到了“为什么”,但我需要你的帮助来找到“如何解决它”。
这是编辑“复杂”记录的表格。
我的布局(简单地说)是这样的:
在我创建表单后,我继续将记录的值加载到表单中并加载以选择网格上的行,相应于嵌套存储中的记录。记录。
我的问题是,因为网格 - 或选择模型 - 没有视图(显然),它会抛出“无法读取属性'长度'未定义”
in
onSelectChange: function(record, isSelected, suppressEvent, commitFn) {
var me = this,
views = me.views,
viewsLn = views.length, // HERE <-------------
store = me.store,
rowIdx = store.indexOf(record),
eventName = isSelected ? 'select' : 'deselect',
i = 0;
...
如果我在尝试选择行之前插入一个足够大的 setTimeout 来更改标签,那么它就可以了。
那么,有没有人知道如何解决这个问题? setTimeout 方法当然不是一个选项:)
非常感谢。
答案 0 :(得分:0)
嗯,问题解决了......只是选择了网格 afterrender 事件的行。
可能会帮助某人。
答案 1 :(得分:0)
在将Ext.form.field.Field
mixin添加到Ext.grid.Panel
以创建我自己的GridMultiSelect
类型的表单字段时,我遇到了此问题。具体来说,我发现在渲染网格之前调用了setValue()
函数,因此设置选择失败。
在网格渲染之前和之后都可以调用setValue()
函数,所以这是我的解决方案:
if (this.rendered) {
this.getSelectionModel().select(recordsToSelect);
} else {
this.addListener('afterrender', function() {
this.getSelectionModel().select(recordsToSelect);
}, this, {
single: true
});
}
也就是说,如果它尚未呈现,请为afterrender
事件创建一次性监听器,然后设置选择。