2013-12-13 23 views
1

我試圖加載屬性值到一個ExtJS店用下面的代碼:ExtJS的負載XMLFILE屬性引入到店

 Ext.define('assert', { 
     extend: 'Ext.data.Model', 
     fields: [ 
      { name: 'id', mapping: '@id' }, 
      { name: 'test', mapping: '@test' }, 
      { name: 'name', mapping: '@name' } 
     ] 
    }); 

    var store = new Ext.data.Store({ 
     model: 'assert', 
     proxy: { 
      type: 'ajax', 
      url : 'App/data/rules.xml', 
      reader: { 
       type: 'xml', 
       model:'assert', 
       record: 'assert' 
      } 
     } 
    }); 

但店內總是顯示了空。 繼承人從XML文件中顯示爲空白摘錄:

<?xml version="1.0" encoding="UTF-8"?> 
<schema xmlns="****" xmlns:axsl="****" xmlns:sch="*****" xmlns:iso="******"  xmlns:xs="*****" xmlns:rule="******"> 
    <title>test Schematron</title> 
    <pattern name="test Schematron"> 
     <rule context="*****" name="*****"> 
      <assert test="*****" diagnostics="*****" name="*****" id="****" comment=""  uval="" source="****"/> 
      <assert test="******" diagnostics="****" name="****" id="***" comment="" uval="" source="*****"/> 
     </rule> 
    </pattern> 
</schema> 

林很新的讀取XML文件,ExtJS的,所以這將是巨大的,如果你人能 告訴我正確的方法對這些屬性映射。

+0

我試圖運行你的代碼,當我打電話'store.load()'存儲在正確加載和分析的兩個記錄數據。 – Akatum

回答

1

您的XML文件沒有問題。您的問題是,ExtJS商店不會在默認情況下自動加載數據。你必須要麼啓用自動加載或負載功能手動加載存儲:

Ext.define('assert', { 
    extend: 'Ext.data.Model', 
    fields: [ 
     { name: 'id', mapping: '@id' }, 
     { name: 'test', mapping: '@test' }, 
     { name: 'name', mapping: '@name' } 
    ] 
}); 

var store = new Ext.data.Store({ 
    model: 'assert',   
    autoLoad: true,   // The store will start loading as soon as the framework is ready. 
    listeners: { 
     load: function(){ // This gets executed when your store is done loading. 
      console.log('Loaded!!'); 
     } 
    }, 
    proxy: { 
     type: 'ajax', 
     url : 'data/rules.xml', 
     reader: { 
      type: 'xml', 
      model:'assert', 
      record: 'assert' 
     } 
    } 
}); 

Ext.onReady(function(){ 

    console.log('Ready!!'); 

    store.load({ // This works too! 
     scope: this, 
     callback: function(records, operation, success) { 
      console.log('loaded records!!'); 
     } 
    }); 

}); 

記住,負載是異步的,你必須等待,直到負載做是爲了能夠使用這些數據!

我建議你檢查API文檔,看看你能用load函數完成的所有工作。