将xml加载到extjs4 treestore中

时间:2012-06-20 07:38:15

标签: javascript xml extjs extjs4

我需要将数据加载到我的treestore中。我的ajax请求给了我没有叶子和文本属性的XML数据。我如何映射它们?

<items>
   <item>mytext</item>
   <item>mytext2</item>
   ...
</items>

我知道叶子属性,但是对于文本我尝试在我的模型中进行映射:

fields: [
    { name: 'leaf' ,  type: 'boolean' , defaultValue: true } ,
    { name: 'text', mapping: 'item'}, 
]

和代理商店中的读者:

reader: { type: 'xml',root: 'items' , record: 'item' }

我有所有节点,但没有text = /

请帮助我!

-kyrillos

2 个答案:

答案 0 :(得分:1)

查看源代码,问题在于Extjs 4期望模型具有子元素,并且您的xml具有模型的最高级别的数据。你要么必须重新构造返回的xml:

<items>
   <item>
       <text>mytext</text>
   </item>
   <item>
       <text>mytext</text>
   </item>
   ...
</items>

并使用映射到那里的文本节点。

另一个选择是创建一个自定义映射函数,它将与你的结构一起工作(可能不是Extjs希望你这样做的方式,但是如果你不能改变xml,这是唯一的方法):

fields: [
    { name: 'leaf' ,  type: 'boolean' , defaultValue: true } ,
    { name: 'text', mapping: function(node){
        if(node.firstChild && node.firstChild.nodeValue)
            return node.firstChild.nodeValue;
        return "";
    }}, 
]

答案 1 :(得分:0)

我找到了另一个解决方案:

fields: [
    { name: 'leaf' ,  type: 'boolean' , defaultValue: true } ,
    { name: 'text', mapping: '/' }
]