javascript - Sencha Touch 2-如何从 View 中的存储中删除 Controller 中的All()?

标签 javascript sencha-touch-2

我想在我的 Controller 中使用stores的removeAll()函数,来删除 View 中stores的内容。可以吗? 这是我的代码:

我的观点:

Ext.define('demoapp.view.MainMenu',{
extend:'Ext.form.Panel',
requires:['Ext.TitleBar','demoapp.store.CCAA'],
alias:'widget.mainmenuview',
config:{
    layout:{
        type:'fit'
    },
    items:[{
        xtype:'fieldset',
        items:[{
            xtype:'titlebar',
            title:'Menú principal',
            docked:'top',
            items:[{
                xtype:'button',
                text:'Desconectar',
                itemId:'logOffButton',
                align:'right'
            }]
        },
        {
            xtype:'fieldset',
            items:[{
                xtype:'selectfield',
                itemId:'CCAAcombo',
                label:'Comunidad Autonoma',
                store:'storeCCAA',
                displayField:'nombre',
                valueField:'id',
                autoSelect:false,
                placeHolder:'Elige una para filtrar'
            }]
        }
        ]
    }],
    listeners:[{
        delegate:'#logOffButton',
        event:'tap',
        fn:'onLogOffButtonTap'
    },
    {
        delegate:'#CCAAcombo',
        event:'change',
        fn:'onCCAAcomboChange'
    }]
},
onLogOffButtonTap:function(){
    this.fireEvent('onSignOffCommand');
},
onCCAAcomboChange:function(field,value){
    console.log("ESTOY EN LA VISTA");
    var idCCAA=value;
    console.log(idCCAA);
    this.fireEvent('onCCAAcomboChangeAction',idCCAA);
}
});

我的 Controller :

Ext.define('demoapp.controller.MainMenu',{
extend:'Ext.app.Controller',
config:{
    refs:{
        loginView:'loginview',
        mainMenuView:'mainmenuview'
    },
    control:{
        mainMenuView:{
            onSignOffCommand:'onSignOffCommand',
            onCCAAcomboChangeAction:'onCCAAcomboChangeAction'
        }
    }
},

//Transicion
getSlideRightTransition: function () {
    return { type: 'slide', direction: 'right' };
},

//Funciones
onSignOffCommand:function(){
    var me=this;

    Ext.Viewport.animateActiveItem(this.getLoginView(),this.getSlideRightTransition());

},
onCCAAcomboChangeAction:function(idCCAA){
    console.log("ESTOY EN EL CONTROLADOR");
    console.log(idCCAA);
}
});

在 Controller 中,在 onSignOffCommand:function() 中的 var me=this 行之后,我想使用 View 的 store:'storeCCAA' 的 removeall() 函数。

最佳答案

为 Controller 中的选择字段添加refs

Ext.define('demoapp.controller.MainMenu',{
    extend:'Ext.app.Controller',
    config:{
        refs:{
            loginView:'loginview',
            mainMenuView:'mainmenuview',
            mainMenuViewSelectField: 'mainmenuview selectfield#CCAAcombo'
        },
        control:{
            mainMenuView:{
                onSignOffCommand:'onSignOffCommand',
                onCCAAcomboChangeAction:'onCCAAcomboChangeAction'
            }
        }
    },

    //Transicion
    getSlideRightTransition: function () {
        return { type: 'slide', direction: 'right' };
    },

    //Funciones
    onSignOffCommand:function(){
        var me=this;

        // Get the store of select field and remove the records
        this.getMainMenuViewSelectField().getStore().removeAll();
        Ext.Viewport.animateActiveItem(this.getLoginView(),this.getSlideRightTransition());

    },
    onCCAAcomboChangeAction:function(idCCAA){
        console.log("ESTOY EN EL CONTROLADOR");
        console.log(idCCAA);
    }
});

关于javascript - Sencha Touch 2-如何从 View 中的存储中删除 Controller 中的All()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30189026/

相关文章:

sqlite - 如果有机会在 Sencha Touch 2 Apps 中使用 SQLite?

android - 在 sencha 触摸 Controller 中调用 android 函数

ios - 在 Xcode 中创建 Sencha Touch、Phone Gap 项目

javascript - 在 Sencha Touch 中动态加载和初始化 Controller

javascript - 使用 select 显示和隐藏多个 div

javascript - 程序到 2D Array 复杂对齐

javascript - 在 TypeScript 中将数字转换为字符串

cordova - AirWatch SDK 与 PhoneGap 集成

javascript - jQuery .bind 绑定(bind)函数未触发

javascript - html弹出面板用javascript打开,工作在本地主机但不在服务器端工作