Extjs 存储到数组获取对象 属性

Extjs Store to Array get object property

我正在开发 Rally 应用程序我正在使用商店从 Portfolio/Feature 模块中提取数据。 这按预期工作。我想将 lisener returns 转换为 arry 我面临的问题是数组只是重新调整对象,我需要来自对象 属性 的数据。 数组的结果如下所示

["F1870",“25343 - 一些项目名称”,“”,对象,对象,2015 年 4 月 27 日星期一 02:00:00 GMT-0400(东部夏令时)]

第一个对象值应该是 John Smith。 John Smith 坐在

的 属性

对象

0: "F1870"

1:“25343 - 一些”

2:“”

3:对象

_p: "0"_ref: "blah Balh"

_refObjectName:"John Smith"

_refObjectUUID: "blah blah"

_类型:

所有者[_refObjectName] 我需要得到什么,但我迷路了。

******编辑以添加更多细节**** 商店 return 的值如下所示

数据:对象

格式化ID:F1223

名称:某项目

描述:等等等等

所有者:对象 _p:

 _ref:

 _refObjectName: John Smith 

我需要数组 return

格式化ID:F1223

名称:某项目

描述:等等等等

所有者:约翰·史密斯

这是我目前的代码。

Ext.define('CustomApp', {
    extend: 'Rally.app.App',
    componentCls: 'app',
    launch: function () {
        console.log("App Launched")   
   //App Calls the portfolio feature data store
   this._getfeaturedatastore();
    },
    //Get the portfolio feature data from Rally 
    _getfeaturedatastore: function(){   
       var getfeaturedata = Ext.create('Rally.data.wsapi.Store', {
    model: 'PortfolioItem/Feature',
    autoLoad: true,
   //Create Fillter for the Store 
     filters: [
        {
            property: 'State.Name',
        
            value: 'Story Definition',
        }
    ],
    listeners: {
        load: function(getfeaturedatastore, getfeaturedatadata, success) {
        console.log("Got Feature Data Woot",getfeaturedatastore, getfeaturedatadata, success)    
        this._displayFeatureCard(getfeaturedata);
        },
        
         scope: this
    },
    fetch: ['State', 'Name', 'Description', 'Owner', 'Parent','PlannedStartDate','FormattedID','Tags']
});
    },
    
    _displayFeatureCard: function(getfeaturedata){
        var MAX_NAME_LEN = 115;
        var name,i,theMarkup, description, owner, parent, plannedstartdate, formattedid;
    
          
    var data =[];
    getfeaturedata.each(function(record){
    var recordArray = [
        record.get("FormattedID"),
        record.get("Name"),
        record.get("Description"),
        record.get("Owner"),
        record.get("Parent"),
        record.get("PlannedStartDate")
        
        ];
        data.push(recordArray);
        console.log(recordArray)
    });
    

您可以使用 getRange 方法从存储中获取所有记录,然后使用 getData 方法从每个记录中获取所有数据。

listeners: {
    load: function(store) {
        var data = _.map(store.getRange(), function(record) {
            return record.getData();
        });

        var feature1 = data[0],
            ownerName = feature1.Owner._refObjectName;
    }
}

此示例还使用了 lodash 映射功能来减少必要的代码行数。此时数据将是一个普通的旧 javascript 对象数组,其中包含商店中的数据。

有关您有权访问哪些数据以及如何访问的线索,可通过 WebServices 文档访问(转到帮助 link 可通过右上角的头像访问)

Rally 数据库中保存的任何工件都可以返回给您:字符串、数字、对象或(对象的)集合。

在投资组合项的 'Owner' 的情况下,它是用户类型的对象。对象的内容描述所有者而不仅仅是提供名称。因为它是一个对象,所以你必须执行 record.get("Owner") 来获取对象,然后执行 record.get("Owner").Name 来获取所有者的名称.

FormattedID 以字符串形式返回,因此您只需执行 record.get("FormattedID") 即可获取文本。