我需要将数据加载到我的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
答案 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: '/' }
]