2014-02-06 2 views
0

내 컨트롤러에는 버튼을 클릭 한 후 다음 참조와 하나의 함수가 있습니다. 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();   
    } 
+0

을 내가 ... 혼란 스러워요 this.getSaleForm()'의 경우 쇼()'작품, 무슨 잘못 'var method = "get"+ type + "Form"을 사용하여; 이 [method](). show();'? 당신이 그것을 찾은 후에 그것을 호출하고 있기 때문에 당신은 메소드 이름에 parens를 원하지 않는다. 그리고 그것은 당신의 클래스에 지역적으로 스코프 된 것처럼 전역 메소드가 될 것이라고 생각하지 않는다. 그래서 당신은 그렇지 않다. 'window'를 사용하고 싶습니다. – incutonez

+0

그것은 당신이 언급하는 방식으로 작동합니다! – dev

+0

그런데'type'은 제공된 코드와 Lorenz Meyer의 대답 모두에서 문자열 변수이기 때문에 우리에게 보여주지 못하는 것이 있습니다 ... type'은 당신이 가지고있는 특별한 특별한 변수가 아니라면 안됩니다 if 너는 그 지역 범위 야. – incutonez

답변

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 
     } 
    } 
}); 
+0

동일한 결과가 나타납니다. get ---- Property [object global] 객체의 getClientForm()이 함수가 아닙니다 .----이 줄은 << this.window [method](). show(); >>가 잘못되었습니다. 어쨌든 그것은 다른 게시물에서 그것을 보는 방법입니다. 메서드를 호출하려면 – dev

+0

맞습니다. 나는 범위를 정의하는 것을 잊었다. 내 편집 좀 봐. –

관련 문제