저는 AMD와 require.js에 매우 익숙하며 거의 하루 동안 약간의 문제로 어려움을 겪고 있습니다. 나는 여러 가지 방법을 시도했지만 정확한 방법/올바른 접근 방식이 무엇인지 모릅니다. 나는 모든 자바 스크립트 전문가로부터 약간의 피드백을 주셔서 감사하겠습니다.jQuery, AMD 및 require.js를 사용한 이벤트 처리
입력/변경 내용을 수신 대기하는 텍스트 상자의 이벤트 처리기를 구현하려고합니다. 이벤트 처리기에서지도에 현재 표시된 마커를 업데이트하고 싶습니다. 그래서, 두 개의 모듈 정의 -지도를 표시하기위한 내 사용자 지정 코드를 포함 openlayers 한 오픈, 사용자 정의 모듈은 다음과 같은 업데이트 마커 등
:
define('mymodule', [ 'open-layers', 'jquery', 'openstreetmaps','t5/core/console' ], function(
openLayers, $,openStreetMaps ,console) {
var init = function() {
}
var listenForChange = function(clientId) {
clientId = clientId;
var textBox = $(document.getElementById(clientId));
console.debug(textBox);
$('#addressLineTwo').on('change paste keypress input', function() {
console.debug(textBox);
console.debug('OnChange');
console.debug($(this));
console.debug($(textBox).val());
openstreetmaps.clearMarkersAndShowAddress();
});
}
return {
init: init,
listenForChange: listenForChange
};
});
문제는이 때 이벤트 처리기가 텍스트 필드의 입력 결과로 호출되면 "on"메서드의 처리기로 정의 된 함수의 변수 openstreetmaps
은 undefined
입니다. 나는이 문제를 얻을 수
그들은 유일한 방법은 다음과 같이 해당 행을 변경했다 :
또한require(['openstreetmaps'], function(openstreetmaps) { openstreetmaps.clearMarkersAndShowAddress(newAddress);});
, 나는 모든 폐쇄 사이의 변수와 전달 데이터를 관리 어떻게 이러한 구조를 사용하는 경우? 내부 클로저가 외부 클로저 또는 함수에서 변수에 액세스 할 수없는 것처럼 보입니다.
귀하의 도움과 의견에 진심으로 감사드립니다.