保存选定的选项集会

时间:2015-01-27 13:07:24

标签: extjs extjs4 rally

我有一个Rally Sdk2应用程序,它有chooserDialog框。 哪个显示程序,我可以选择多个程序并单击过滤器 然后它显示这些程序的功能,但是,当我再次进入同一个对话框时,它不存储我做的最后选择.. 我尝试了有状态,但我没弄错,下面是我的对话

enter image description here

以下是我的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);
                        }
                    }
                });
            },  

2 个答案:

答案 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
        });
    }
});