J'ai une page avec deux types de formulaires. J'ai une forme unique de type A en haut, et ensuite j'ai 1 ou plusieurs formes de type B en dessous.Le modèle de module Javascript peut-il être utilisé pour les singletons et aussi pour les objets qui sont instanciés multi-temps?
J'utilise le modèle de module + jQuery pour câbler tous les événements sur mes formes, gérer la validation, les appels ajax, etc.
Est-ce le meilleur moyen/valide pour définir un singleton, selon la formule A, et une classe d'objets réutilisable, comme dans le formulaire B? Ils sont très similaires et je ne sais pas si j'ai besoin d'utiliser objet la propriété prototype
, new
, ou un modèle différent. Tout semble fonctionner pour moi mais j'ai peur de manquer une erreur clé.
Form A
javascript ressemble à ceci:
var MyProject.FormA = (function() {
var $_userEntry;
var $_domElementId;
var validate = function() {
if($_userEntry == 0) {
alert('Cannot enter 0!');
}
}
var processUserInput = function() {
$_userEntry = jQuery('inputfield', $_domElementId).val();
validate();
}
return {
initialize: function(domElementId) {
$_domElementId = domElementId;
jQuery($_domElementId).click(function() {
processUserInput();
}
}
}
})();
jQuery(document).ready(function() {
MyProject.FormA.initialize('#form-a');
});
Form B
, qui est initialisé une ou plusieurs fois, est défini comme ceci:
var MyProject.FormB = function() {
var $_userEntry;
var $_domElement;
var validate = function() {
if($_userEntry == 0) {
alert('Cannot enter 0!');
}
}
var processUserInput = function() {
$_userEntry = jQuery('inputfield', $_domElement).val();
validate();
}
return {
initialize: function(domElement) {
$_domElement = domElement;
jQuery($_domElement).click(function() {
processUserInput();
}
}
}
};
jQuery(document).ready(function() {
jQuery(".form-b").each(function() {
MyProject.FormB().initialize(this);
});
});