我想检索Rally Defect的所有可用状态值。 以下代码适用于功能:
this.states = [];
this.stateStore = Ext.create('Ext.data.Store', {
fields: ['_ref', 'name']
});
Ext.create('Rally.data.wsapi.Store', {
model: 'State',
autoLoad: true,
filters: [
{
property: 'Enabled',
operation: '=',
value: true
},
{
property: 'TypeDef.Name',
operation: '=',
value: 'Feature'
}
],
listeners: {
load: function (store, data) {
for (var i = 0; i < data.length; i++) {
this.stateStore.add({ '_ref': data[i].data._ref, 'name': data[i].data.Name });
}
this.statesLoaded = true;
this._initialLoad();
},
scope: this
}
});
使用这种方法,我们加载功能的所有可用状态值。但是,当我更改“功能”时TypeDef.Name过滤到&#39;缺陷&#39;,尽管定义了很多有效缺陷的状态,但我什么也得不到。 有谁知道为什么会发生这种情况以及如何获得缺陷的状态值? 也许缺陷使用其他一些状态,而不是功能,故事等等?
答案 0 :(得分:1)
在WS API中,有一个完整的State对象,它表示PortfolioItems的状态。它与诸如Defect或UserStory之类的工件的State或ScheduleState不同,它们只是下拉字段中的字符串值。对于缺陷,没有State.Name这样的东西。
使用promises,这可能如下所示:
launch: function(){
this._getModel().then({
success: this._getAllowedValues,
scope:this
}).then({//...})
},
_getModel:function(){
return Rally.data.ModelFactory.getModel({
type:'Defect'
});
},
_getAllowedValues:function(model){
var deferred = Ext.create('Deft.Deferred');
var allowedStateValues = [];
model.getField('State').getAllowedValueStore().load({
callback: function(records,operation,success){
Ext.Array.each(records,function(allowedValue){
allowedStateValues.push(allowedValue.get('StringValue'));
});
if(success){
deferred.resolve(allowedStateValues);
}
else{
deferred.reject();
}
}
}) ;
return deferred.promise;
},//...
请参阅this example,检索缺陷优先级和严重性的允许值。由于这些允许空值,因此在此应用示例中删除了空值,但State没有空值,因此您可以跳过该步骤。