1

使用 SnapshotStore 时,我无法对作为查询的一部分返回的对象的“名称”属性进行水合。我得到了项目的正确 OID,但我想显示项目的字符串名称而不是 OID。我该怎么做呢?

这是我用来查询的代码,但是当我将“Project”属性添加到 Hydrate 字段时,它似乎并不重要。如果我完全注释掉水合物行,状态和分辨率就会返回为未水合且不可读(大多数人),所以我知道它至少可以正常工作。

doSearch: function(query, fields, sort, pageSize, callback){
    var transformStore = Ext.create('Rally.data.lookback.SnapshotStore', {
        context: {
            workspace: this.context.getWorkspace(),
             project: this.context.getProject()
        },
        fetch: fields,
        find: query,
        autoLoad: true,
    hydrate: ["State","Resolution","Project"],
        listeners: {
            scope: this,
            load: this.processSnapshots
        }
    });
},

“我们找不到以下用户友好的表格:'项目':7579240995” - 这是我尝试在水合物字段中包含“项目”时得到的。

我在某处读到 hydrate 只适用于下拉菜单。那是对的吗?如果是这样,我如何能够轻松地为查询返回的每个对象显示项目名称?

4

1 回答 1

1

不幸的是,Project 不是一个可水合的领域。通常,可以水合的字段是您在问题中提到的下拉字段。

完成所需工作的最佳方法是使用 Rally.data.WsapiDataStore 来查询当前工作空间中的项目并构建 OID 的内存映射以命名。

var projects = {};
Ext.create('Rally.data.WsapiDataStore', {
    model: 'Project',
    autoLoad: true,
    limit: Infinity,
    fetch: ['Name', 'ObjectID'],
    context: this.getContext().getDataContext(),
    listeners: {
        load: function(store, records) {
            Ext.Array.each(records, function(record) {
                projects[record.get('ObjectID')] = record.get('Name');
            });
        }
    }
});
于 2013-06-12T22:48:05.120 回答