2011-06-20 3 views
1

ext.jsを使用してXMLファイルからデータを取得し、結果をループしてテンプレートに表示しますが、機能しません。私は正常に結果をループしてコンソールに記録することができますが、テンプレートに渡すと何も表示されません。ここに私のコード:ext.js - テンプレートにXMLデータを適用できません

Ext.regModel('Work', { 
    fields: ['title', 'thumb', 'video'] 
}); 

var workStore = new Ext.data.Store({ 
    model: 'Work', 
    proxy: { 
     type: 'ajax', 
     //url : 'http://superfad.com/work/work_xml', 
     url : 'lib/xml/work_xml.xml', 
     reader: { 
      type: 'xml', 
      record: 'project' 
     } 
    } 
}); 

t_work = new Ext.Component({ 
    cls:'t_work', title:'Work', 
    title:'Work', 
    scroll: 'vertical', 
    tpl: new Ext.XTemplate(
     '<tpl for=".">', 
      '<div class="work">', 
        '<h3 class="work_title">{title}</h3>', //this doesn't work 
        '<div class="work_thumb">', 
         '<img src="{thumb}" alt="{title}"/>', //this doesn't work 
        '</div>', 
      '</div>', 
     '</tpl>' 
    ) 
}); 

function loadWork(){ 
    workStore.load({ 
     callback: function(data) { 
      var projects = data; 
      t_work.update(projects) 
      for (var i = 0, iln = projects.length; i < iln; i++){ 
       console.log(projects[i].get('title')) //this works 
      } 
     } 
    }); 
} 

誰でもアイデアはありますか?

答えて

0

xmlを共有できますか?

モデルフィールドの名前が、xmlファイルの名前と完全に同じであることを確認してください(大文字も含む)。あなたのモデルが正しく設定されていない可能性があります、私はこの問題を自分で持っていた。 また、xmlファイルにルートノードがないことを確認してください。ルートノードを使用している場合は、次のようにします( 'rootnode'をノードの名前に置き換えます)。

var workStore = new Ext.data.Store({ 
    model: 'Work', 
    proxy: { 
     type: 'ajax', 
     //url : 'http://superfad.com/work/work_xml', 
     url : 'lib/xml/work_xml.xml', 
     reader: { 
      type: 'xml', 
      record: 'project', 
      root: 'rootnode' 
     } 
    } 
}); 
関連する問題