JavaScript Module Pattern을 사용하려고하는데 어떻게해야되는지 확신 할 수없는 문제가 있습니다.Javascript 모듈 패턴과 Jquery가 작동합니까?
그래서 코드를 분리하고 읽기 쉽게 2 개의 스크립트 파일이 있습니다.
// script 1
var abc = (function (my, $)
{
my.events = function()
{
// selectors is from my base file(not shown as I don't think it is needed to be shown)
// my.selectors.createFrm = '#createFrm'
var createSubmitFrmHandler = $(my.selectors.createFrm).live('submit', function (e)
{
e.preventDefault();
});
}
return my;
} abc || {}, jQuery));
// script 2
var abc = (function (my, $)
{
my.dialogs = {
addDialog: function()
{
var $dialog = $('<div></div>').dialog(
{
width: 580,
height: 410,
resizable: false,
modal: true,
autoOpen: false,
title: 'Basic Dialog',
buttons:
{
Cancel: function()
{
$(this).dialog('close');
},
'Create': function()
{
jQuery.validator.unobtrusive.parse(my.selectors.createFrm)
// this is undefined as page loadup no form was found so live did not kick in
my.createSubmitFrmHandler.validate().form();
}
}
});
return $dialog;
},
return my;
} abc || {}, jQuery));
따라서 createSubmitFrmHandler가 정의되어 있는지 확인하고 수행중인 작업을 계속 수행하는 방법을 잘 모르겠습니다.
편집
는 내가 확실하지 오전 유일한 것은 내가 반복이 함수를 호출하면이 객체를 만들고 유지하거나 의지하는 것입니다이
var abc = (function (my, $)
{
my.events = function()
{
// some one time events here
}
my.test = function()
{
var add = $(selectors.createFrm).live('submit', function (e)
{
e.preventDefault();
});
return add;
};
}
처럼 뭔가를하고 결국 라이브가 이미 묶여 있고 바인딩을 더 이상하지 않을 것입니다.
@Tgr - 죄송합니다. 방금 말씀하신 내용을 이해할 수 없습니다. 나는 그걸 가지고 있지 않니? $ (my.selectors.createFrm) .live ('submit', ..). 이것은 말 그대로 모듈 패턴을 사용하는 첫날입니다 ... – chobo2
이 my.createSubmitFrmHandler.validate(). form(); ? 그렇다면 나는 그것을 시도하고있어 "my.createSubmitFrmHandler 정의되지 않았습니다" – chobo2
대답을 업데이 트, 바라건대 지금 더 의미가 있습니다. – Tgr