1

Release モデルをプルバックしてグリッドに表示するコードがいくつかあります。これは正常に機能していますが、返されたモデルの内容を調べる方法がわかりません。

私が望むのは、モデルの内容を何らかのオブジェクト (この場合はリリース モデル) で再編成または掘り下げることができるようにすることです。

コンポーネントを追加してモデルを 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...

Rally のドキュメントでは、モデルhttps://help.rallydev.com/apps/2.0rc2/doc/#!/api/Rally.data.Modelで getData() を呼び出せるはずですが、ModelFactory のように見えます。 getModel() が getData() メソッドを持つ型を返さない

4

1 に答える 1

1

モデルはクラスであり、レコードはそのクラスのインスタンスです。

getData()レコードに取り組みます。実際のモデルで動作する静的メソッドがありますがgetData()、それらの 1 つではありません。

以下は、以下のコードの一部です。

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

このコードは、プロジェクトと ReleaseStartDate によってフィルター処理されたリリースのグリッドを構築します。あなたのコードでは、実際に dom を変更することによって、おそらくデバッグ目的でモデル情報を表示したいことに気付きました。私は console.log を使用したいと思いますが、以下の例では両方を使用しています。フッター付きのボーダーレイアウトを使用し、フッターのコンテナーのhtmlプロパティをに設定しました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);
         }

      }
 });

ここに画像の説明を入力

于 2014-01-30T19:58:12.083 に答える