EXTJS setRootNode 可能的错误
EXTJS setRootNode possible bug
我有一个树面板和树商店,我想将我的树面板保存到商店中,为此我正在使用:
var treepanel = Ext.create('Ext.tree.Panel', {
title: 'Tree example',
store: store,
rootVisible: false,
lines: true
});
var store = Ext.create('Ext.data.TreeStore', {
root: {
expanded: true,
}
});
var button = Ext.create('Ext.button.Button', {
text: 'test',
handler: function() {
treepanel.getRootNode().appendChild({text: 'child',
leaf: true});
store.setRootNode(treepanel.getRootNode());
}
});
但这不起作用,但是如果我创建一个变量,例如:
var aux = { root:{
expanded: true,
children: [{
text: 'child',
leaf: true
}]
}}
我也是这样用的:
store.setRootNode(aux);
这很好用。有什么想法吗?这里是 fiddle 示例,您可以在其中使用按钮 1 和 2 并使用 firebug 检查错误:http://jsfiddle.net/fL5fT/28/
我认为你确实误解了你在 fiddle 中写的一些动作:
首先是这段代码:
treepanel.getRootNode().appendChild({text: 'child', leaf: true});
已经 item/child 保存到那个商店。所以你不需要这样做:
store.setRootNode(treepanel.getRootNode());
上一行中的下一个混淆是您正在尝试设置 store
的新 RootNode
。这种情况会在控制台中抛出错误,因为您试图设置语法错误 RootNode
.
此代码有效:
var aux = { root:{
expanded: true,
children: [{
text: 'child',
leaf: true
}]
}}
因为您在这里创建了正确的新 RootNode
。
您需要注意,创建新的 RootNode
会丢弃之前添加到该商店的所有项目。
我有一个树面板和树商店,我想将我的树面板保存到商店中,为此我正在使用:
var treepanel = Ext.create('Ext.tree.Panel', {
title: 'Tree example',
store: store,
rootVisible: false,
lines: true
});
var store = Ext.create('Ext.data.TreeStore', {
root: {
expanded: true,
}
});
var button = Ext.create('Ext.button.Button', {
text: 'test',
handler: function() {
treepanel.getRootNode().appendChild({text: 'child',
leaf: true});
store.setRootNode(treepanel.getRootNode());
}
});
但这不起作用,但是如果我创建一个变量,例如:
var aux = { root:{
expanded: true,
children: [{
text: 'child',
leaf: true
}]
}}
我也是这样用的:
store.setRootNode(aux);
这很好用。有什么想法吗?这里是 fiddle 示例,您可以在其中使用按钮 1 和 2 并使用 firebug 检查错误:http://jsfiddle.net/fL5fT/28/
我认为你确实误解了你在 fiddle 中写的一些动作:
首先是这段代码:
treepanel.getRootNode().appendChild({text: 'child', leaf: true});
已经 item/child 保存到那个商店。所以你不需要这样做:
store.setRootNode(treepanel.getRootNode());
上一行中的下一个混淆是您正在尝试设置 store
的新 RootNode
。这种情况会在控制台中抛出错误,因为您试图设置语法错误 RootNode
.
此代码有效:
var aux = { root:{
expanded: true,
children: [{
text: 'child',
leaf: true
}]
}}
因为您在这里创建了正确的新 RootNode
。
您需要注意,创建新的 RootNode
会丢弃之前添加到该商店的所有项目。