我想使用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( '提交',..)。這實際上是我第一天使用模塊模式... – chobo2 2011-02-28 22:54:20
你的意思是我應該有這個my.createSubmitFrmHandler.validate()。form(); ?如果是這樣,我嘗試了,並得到「my.createSubmitFrmHandler是未定義」 – chobo2 2011-02-28 23:01:13
更新了答案,希望它現在更有意義。 – Tgr 2011-03-01 00:28:26