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

すべてのノードがありますが、テキストはありません =/

私を助けてください !

-キリロス

4

2 に答える 2

1

ソースコードを見ると、問題は、Extjs 4がモデルにサブ要素を持っていることを想定しており、xmlにモデルの最上位レベルのデータがあることです。次のようなものに返されるxmlを再構築する必要があります。

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

そして、そこにあるテキストノードへのマッピングを使用します。

もう1つのオプションは、構造で機能するカスタムマッピング関数を作成することです(おそらく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 に答える