EXTJS setRootNode可能的bug

时间:2015-08-20 22:30:29

标签: javascript extjs tree extjs4.2

我有一个treepanel和树店,我想将我的treepanel保存到商店,因为我正在使用:

\d+

但这不起作用,但是如果我创建一个变量,如:

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

这很好用。有什么想法?,这里是小提琴示例,您可以使用按钮1和2来检查错误:http://jsfiddle.net/fL5fT/28/

1 个答案:

答案 0 :(得分:1)

我认为你确实误解了你在小提琴中写的一些动作:

首先是这段代码:

treepanel.getRootNode().appendChild({text: 'child', leaf: true});

已将项目/子项保存到该商店。所以你不需要这样做:

store.setRootNode(treepanel.getRootNode());

上述行中的下一个混淆是您尝试设置RootNode的新store。这种情况会在控制台中引发错误,因为你试图设置语法错误RootNode

此代码可以使用:

var aux = { root:{ 
                  expanded: true,
                  children: [{
                            text: 'child',
                            leaf: true
                           }]
           }}

因为您在此处创建了正确的新RootNode

您需要注意,新RootNode会丢弃该商店之前添加的所有商品。