0

我需要将数据加载到我的树库中。我的 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' }

我有所有节点但没有文本=/

请帮我 !

-kyrillos

4

2 回答 2

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 "";
    }}, 
]
于 2012-06-25T18:52:16.403 回答
0

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

fields: [
    { name: 'leaf' ,  type: 'boolean' , defaultValue: true } ,
    { name: 'text', mapping: '/' }
]
于 2012-06-27T11:37:27.610 回答