如何在SnapshotStore中保存项目名称

时间:2013-06-12 22:23:25

标签: javascript rally

使用SnapshotStore时,我无法保存作为查询一部分返回的对象的“Name”属性。我得到了项目的正确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” - 是我在水合物领域中包含“项目”时得到的。

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

1 个答案:

答案 0 :(得分: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');
            });
        }
    }
});