Я пытаюсь использовать шаблон модуля JavaScript , и я сталкиваюсь с проблемой, которую не знаю, как обойти.
Итак, у меня есть 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;
};
}
Единственное, в чем я не уверен, так это в том, что если я буду вызывать эту функцию снова и снова, она будет продолжать создавать этот объект или будет смотреть и видеть, что прямая трансляция уже связана и больше не будет связываться?