EXTJS将函数赋值给变量并动态调用它

时间:2014-02-06 09:19:38

标签: javascript controller extjs4

在我的控制器中,我有以下参考和单击按钮后调用的一个功能。是否可以构造一个ref方法然后调用它?我只想在一个函数中处理很多情况,我想避免if语句(因为它在项目中是必需的。它应该是通用的)

该类型将作为该函数的参数。

     refs    : [{
        ref      : 'saleForm',
        selector : 'sale saleform'
     }],

         init: function () {    
            this.control({
                     'salesview #mybutton':{
                     click : this.onSaleClick 
                    }
            }); 
         },

    onSaleClick : function(){

       //this.getSaleForm().show();//works

       var type = "Sale";   
       var method = "get"+type+"Form()";    
       this.window = window;
       this.window[method]().show();        
   }

1 个答案:

答案 0 :(得分:1)

这应该没有问题。尝试这样的事情:

     init: function () {    
        this.control({
            'salesview #mybutton':{
                click : function(){
                    this.onGenericClick("Sale")
                }
             },
             scope: this
        }); 
     },

onGenericClick : function(type){
   var method = "get"+type+"Form()";    
   this.window = window;
   this.window[method]().show();        
}

您必须定义侦听器的范围才能引用this。这是关于the listener object的文档。您可以只为一个事件传递范围,而不是在this.control中全局传递范围,如下所示:

this.control({
    'salesview #mybutton':{
        click: {
            fn: function(){
                this.onGenericClick("Sale")
            }, 
            scope: this
        }
     }
});