메신저를 오해하는 기능 범위 내 기능 :JS & EXT JS : 다음 코드 몇 가지 문제가
내가하지만 'enviarLogin'내부 'crearLoginWindow'함수를 호출 할 수 있도록하려면Ext.define('...controller...', {
extend: 'Ext.app.Controller',
init: function() {
...
},
crearLoginWindow:function(){
var loginWindow = Ext.create('Proto1.view.adminbd.LoginWindowBDView', {
itemId: 'loginwindow',
autoShow: true,
modal: true
});
Ext.ComponentQuery.query('#loginwindow > button[text="Cancelar"]')[0].on('click', function(){loginWindow.close()});
//Cant call 'enviarLogin' function if its inside 'crearLoginWindow'
Ext.ComponentQuery.query('#loginwindow > button[text="Conectar"]')[0].on('click', this.enviarLogin, this);
var enviarLogin = function(){
console.log('login')
}
}
});
그것은 참조를 던졌습니다 오류. 함수가 'crearLoginWindow'외부에 있으면 작동 할 것입니다.
이 두 라인 문제의 근원 인 : 나는 다른 범위를 시도했습니다
Ext.ComponentQuery.query('#loginwindow > button[text="Conectar"]')[0].on('click', this.enviarLogin, this);
var enviarLogin = function(){
console.log('login')
}
하는 등의 변형;
Ext.ComponentQuery.query('#loginwindow > button[text="Conectar"]')[0].on('click', this.crearLoginWindow.enviarLogin);
this.enviarLogin = function(){
console.log('login')
}
범위와 기능을 실행하기 위해 상주하는 위치를 지정해야한다는 필요성에 대해 이해할 수 있습니다.
이 문제는 내 코드가 매우 어수선하기 때문에 해결할 수 있습니다.
감사합니다. 아래에 함수를 넣는 간단한 방법이 없다면 옵션 1이 내 코드를이 문제에 대해 명확하게 유지하는 가장 좋은 해결책 인 것 같습니다. – vto
함수 표현식 대신 함수 선언을 사용하면 아래 함수 정의와 함께 옵션 1을 사용할 수 있습니다 :'function enviarLogin() {...}'- [관련 질문] (http://stackoverflow.com/) 질문/336859/javascript-var-functionname-function-vs-function-functionname) – nrabinowitz
좋아, 내가 원하는 모든 '도우미'를 넣을 수 있고 또한 '하위 기능'이 '함수 컨테이너'. – vto