我有一个Rally Sdk2应用程序,它有chooserDialog框。 哪个显示程序,我可以选择多个程序并单击过滤器 然后它显示这些程序的功能,但是,当我再次进入同一个对话框时,它不存储我做的最后选择.. 我尝试了有状态,但我没弄错,下面是我的对话
以下是我的ChooserDialog代码
_run: function() {
var me = this;
Ext.create('Rally.ui.dialog.ChooserDialog', {
width: 470,
autoScroll: true,
height: 500,
title: 'Select to Filter',
pageSize: 100,
closable: false,
selectionButtonText: 'Filter',
itemId: 'chooser',
multiple: true,
setMultiple: true,
artifactTypes: ['PortfolioItem/Program','PortfolioItem/Epic','PortfolioItem/MMF'],
autoShow: true,
stateful: true,
stateId: 'selected-pi',
stateEvents: ['click','statesave'],
storeConfig:{
fetch: ['Name','PortfolioItemTypeName', 'Parent']
},
listeners: {
scope: me,
artifactChosen: function(selectedRecord) {
//this.down('#chooser').setValue(selectedRecord);
var filters = me._getFilters(selectedRecord);
me._drawCardBoard(me, filters);
}
}
});
},
答案 0 :(得分:1)
这可能在SDK的rc版本中也可能不存在。我们刚刚推出了新的2.0版本,它现在完全支持有状态的mixin。
甚至还有一个如何实施它的指南:
http://help.rallydev.com/apps/2.0/doc/#!/guide/state
另请注意,ChooserDialog被视为已弃用。 ArtifactChooserDialog应该是一个主要的替代品。
答案 1 :(得分:1)
我没有尝试使用State,但可以使用localstorage
来设置默认值:
localStorage.setItem('MyComboboxValue',Ext.getCmp('MyCombobox').getValue());
并通过将组件的value
config属性设置为返回的值来获取默认值:
value: localStorage.getItem('MyComboboxValue')
通过this github repo中的localstorage,查看在组合框和复选框中保存选择的完整代码示例。重新加载页面后,将保留选项。
更新:我试图让ArtifctChooserDialog记住选择,但事实证明,由于Kyle识别的错误导致multiple: true
多次选择时,此代码将无效。
Ext.define('CustomApp', {
extend: 'Rally.app.App',
componentCls: 'app',
_selected: [],
stateful: true,
getState: function(){
return{
selectedRef: this.selectedRecord
}
},
launch: function() {
var that = this;
Ext.create('Rally.ui.dialog.ArtifactChooserDialog', {
itemId: 'dialog',
autoShow: true,
multiple: true,
artifactTypes: ['PortfolioItem/Theme','PortfolioItem/Initiative','PortfolioItem/Feature'],
storeConfig:{
fetch: ['Name','PortfolioItemTypeName']
},
listeners: {
scope: this,
artifactchosen: function(dialog, selectedRecord) {
this._selected.push(selectedRecord);
console.log(selectedRecord);
//this.selectedRecord = dialog.getSelectedRef();
this.selectedRecord = Rally.util.Ref.getRelativeUri(selectedRecord);
this.saveState();
}
},
selectedRef: this.selectedRef
});
}
});