При попытке вырезать шаблонный код я пытаюсь добавить обработчики для общих полей формы к объекту обработчика, которые будут выделять плохое поле, показать некоторую ошибку и т. Д. До сих пор у меня есть это:Программируя добавление обработчиков для обработки обработчика формы
//FieldHelper.js
exports.withStandardStoreHandlers = function (storeObj, fields)
{
for(var i = 0; i < fields.length; i++)
{
var f = fields[i];
var midName = f.charAt(0).toUpperCase() + f.slice(1);
storeObj.prototype["onUpdate" + midName] = function(event) {
this[""+f] = event.target.value;
this[f+"ValidationState"] = '';
this[f+"HelpBlock"] = '';
};
}
return storeObj;
}
, а затем в конце концов, я создаю Alt-магазин, который экспортируется таким образом:
export default alt.createStore(FieldHelper.withStandardStoreHandlers(AddressStore, "firstName", "lastName", "street"));
и это на самом деле делает добавить "onUpdateFirstName", "onUpdateLastName" и т.д. методы, но, к сожалению, все они используют поле, которое прошло последним. Итак, в этом примере я ввожу некоторый материал в имя, но onUpdateFirstName изменяет текстовое поле улицы и его состояние/статус проверки.
Очевидно, что решение состоит в том, чтобы каким-то образом сделать копию переменных «f» и «midName», поэтому каждый из динамически созданных методов onUpdateX будет иметь для них собственное значение, вместо того, чтобы использовать последний доступный, но я просто не могу понять, как это сделать в JavaScript. Предпочтительно в качестве совместимого с обратной стороной образом, так как это будет на переднем конце.