2014-01-28 56 views
1

的內容我有一些代碼,是拉動釋放模型回來,在網格中顯示,這是工作的罰款,但我不知道如何檢查是什麼在返回的模型。拉力賽API 2檢查模型,

我想什麼是讓模型的內容在某種對象,我可以重新組織或鑽入我認爲合適的(在這種情況下釋放模型)。

如果我添加的成分,只是轉儲模式進入它沒有返回的內容,我會期待的HTML。

Rally.data.ModelFactory.getModel({ 
     type: 'Release', 
     success: function(model) { 
       this.add({ 
        xtype: 'component', 
        html: model 
       }); 

       this.grid = this.add({ 
       xtype: 'rallygrid', 
       model: model, 
       columnCfgs: [ 
        'FormattedID', 
        'Name', 
        'RevisionHistory'     ], 
       storeConfig: { 
        filters: queryFilters 
       } 
      }); 
     }, 
     scope: this 
    });     

如果我鑽進去ExtJS的文檔似乎我應該可以做類似的getData()對模型返回的內容,但是這是行不通的。

在調試器中的檢​​查告訴我,我有一個「Rally.domain.v2.0.project.10098485624.Release」對象,但我看不到如何簡單地訪問對象中的項目列表。顯然有一種方法,因爲將這個模型傳遞給一個網格組件會很高興地顯示出來。 此對象的調試器顯示我的一些其他功能調用,但我不知道或如何使用它

... 
getArtifactMappings: function() { 
getCollectionFields: function() { 
getCustomFields: function() { 
getField: function (fieldName) { 
getFields: function() { 
getFieldsByName: function (fieldNames) { 
getName: function() { 
getNonCollectionFields: function() { 
getPermissionLevels: function (permission) { 
getProxy: function() { 
etc... 

其中之一的拉力文檔表明我應該能夠在模型調用的getData() https://help.rallydev.com/apps/2.0rc2/doc/#!/api/Rally.data.Model但它看起來像ModelFactory.getModel()沒有返回具有getData()方法的類型

+1

你需要設置一個破發點,並使用控制檯對象,以檢查找出類型。我對拉力賽並不熟悉,因此目前我不能提供更多的信息。 –

回答

1

模型是一個類,記錄是該類的一個實例。

getData()將在創紀錄的工作。 有一些靜態方法可用於實際模型,但getData()不是其中之一。

下面是從下面的代碼片斷:

_onDataLoaded: function(store, data){ 
     _.each(data, function(record){ 
     var r = record.getData(); 
     console.log('release', r); 

此代碼會生成由項目和ReleaseStartDate過濾發佈的網格。我注意到在你的代碼中你想顯示模型信息,可能是爲了調試目的,通過實際修改dom。我寧願使用console.log,但在下面的例子中,我做了兩個。我用了一個邊界佈局頁腳,並設置容器的HTML proprety在頁腳JSON.stringify(r)

Ext.define('CustomApp', { 
    extend: 'Rally.app.App', 
    componentCls: 'app', 
    layout:'border', 
       defaults: { 
        collapsible: true, 
        split: true, 
        bodyStyle: 'padding:15px', 
       }, 
        items: [{ 
         title: 'data', 
         region:'south', 
         itemId: 'd', 
         margins: '5 0 0 0', 
         cmargins: '5 5 0 0' 

        },{ 
         title: 'Releases', 
         itemId: 'r', 
         collapsible: false, 
         region:'center', 
         margins: '5 0 0 0' 
        }] , 
     launch: function() { 
     var context = this.getContext(); 
     var projectId = context.getProject().ObjectID; 
     var millisecondsInDay = 86400000;    
        var currentDate = new Date(); 
        var startDate = new Date(currentDate - millisecondsInDay*90); //in the last 90 days 
        var startDateUTC = startDate.toISOString(); 
     Ext.create('Rally.data.WsapiDataStore', { 
      model: 'Release', 
      fetch: ['Name','ReleaseStartDate','ReleaseDate', 'State'], 
      filters: [ 
         { 
         property: 'ReleaseStartDate', 
         operator: '>', 
         value: startDateUTC 
         }, 
         { 
         property: 'Project', 
         operator: '=', 
         value: '/project/'+ projectId 
         } 
        ], 
      autoLoad: true, 
      listeners: { 
       load: this._onDataLoaded, 
       scope: this 
      } 
     }); 
    }, 


    _onDataLoaded: function(store, data){ 
    var text = ''; 
     _.each(data, function(record){ 
     var r = record.getData(); 
     console.log('release', r); 
     text = text + JSON.stringify(r); 
     }); 
     console.log('text', text); 
     this.down('#d').add({ 
      xtype:'container', 
      html: text 
      }); 
     if (!this.down('#g')) { 
      this.down('#r').add({ 
      xtype: 'rallygrid', 
      store: store, 
      itemId: 'g', 
      columnCfgs: [ 
       { 
        text: 'Name', dataIndex: 'Name' 
       }, 
       { 
        text: 'State', dataIndex: 'State' 
       }, 
       { 
        text: 'Start Date', dataIndex: 'ReleaseStartDate', flex:1 
       }, 
       { 
        text: 'Release Date', dataIndex: 'ReleaseDate',flex:1 
       } 
      ] 

     }); 
     } 
     else{ 
      (this.down('#g')).reconfigure(store); 
     } 

     } 
}); 

enter image description here