Это хороший способ, чтобы сохранить сообщения об ошибках для отображения пользователю?


Я использую следующий код, чтобы поместить все мои сообщения об ошибках для приложений в одной переменной JavaScript. Это эффективный способ хранить мои сообщения об ошибках?

var cosmoBase = {
    messages: {
        empty: "Please enter ",
        numeric: "Please enter a valid number for ",
        date: "Please enter a valid date for "
    }
};
//Error messages
var cosmo = {
    messages: {
        lastName: {
            empty: cosmoBase.messages.empty + "Last Name"
        },
        dob: {
            empty: cosmoBase.messages.empty + "Date of Birth",
            invalid: cosmoBase.messages.date + "Date of Birth"
        },
        ssn: {
            empty: cosmoBase.messages.empty + "SSN",
            invalid: cosmoBase.messages.numeric + "SSN"
        },
        studentId :{
            empty: cosmoBase.messages.empty + "Student ID",
            invalid: cosmoBase.messages.numeric + "Student ID"
        }
    }
};

ПОДРОБНЕЕ

Приведенный выше код сохраняется в файл JS

Я ссылок на такие сообщения об ошибке :

var validator = $("form:first").validate({
    errorClass: 'Input_State_Error',
    rules: {
        lastName: {
            required: true
        },
        dob: {
            required: true,
            date: true,
            minlength: 10
        },
        ssn: {
            required: true,
            minlength: 4
        },
        studentId: {
            required: true
        }
    },
    messages: {
        lastName: cosmo.messages.lastName.empty,
        dob: {
            required: cosmo.messages.dob.empty,
            date: cosmo.messages.dob.invalid
        },
        ssn: cosmo.messages.ssn.empty,
        studentId: cosmo.messages.studentId.empty
    },
    errorPlacement: function(error, element) {
        error.appendTo($('#msg'));
    }
});


1095
5
задан 12 мая 2011 в 02:05 Источник Поделиться
Комментарии
2 ответа

Я бы порекомендовал вам вместо того, чтобы использовать фабрику.

cosmo.error = function(id) {
...
};

затем просто использовать Космо.ошибка("ССН-пусто")

Имея свою логику на заводе, а затем объект дает вам больше контроля и делает код значительно более сухой.

Реализация ошибку:

var error = (function() {
var base = {
empty: "Please enter ",
numeric: "Please enter a valid number for ",
date: "Please enter a valid date for ",
ssn: "SSN",
lastName: "Last Name",
dob: "Date of Birth",
studentId: "Student ID"
};

var methods = {
"ssn": function(id) {
if (id === "invalid") {
return base.numeric + base.ssn;
}
},
"dob": function(id) {
if (id === "invalid") {
return base.date + base.dob;
}
},
"studentId": function(id) {
if (id === "invalid") {
return base.numeric + base.studentId;
}
},
};

return function(id) {
var parts = id.split("-");
if (parts[1] === "empty") {
return base.empty + base[parts[0]];
} else {
return methods[parts[0]](parts[1]);
}
}
}());

console.log(error("ssn-invalid"));

живой пример

3
ответ дан 12 мая 2011 в 04:05 Источник Поделиться

Я вижу, вы используете

errorPlacement: function(error, element) {
error.appendTo($('#msg'));
}

Если вы делаете что-то в JS-магазине Ваш журнал ошибок, вы можете сделать некоторые действительно классные вещи.

Например, я использую этот быстрый вещь, чтобы войти мои ошибки в див...

var logLine = function(comment, element) {
this.count = this.count + 1 || 0;
element = element || $("");
comment = comment || "undescribed event";
$("pre.log").append(this.count + " - " +comment + "\n");
}

Но то, что я собираюсь сделать, это принять мой план этого.граф, и сделать место, чтобы хранить все мои объекты ошибку.

Так, например,

var logLine = function(comment) {
this.count = this.count + 1 || 0;
this.errorLog = this.errorLog || [];
comment = comment || "undescribed event";

var logEntry = {}
logEntry.id = this.count;
logEntry.error = this.comment;
logEntry.time = new Date().getTime();
//Anything else you want from https://developer.mozilla.org/en/DOM/window.navigator

this.errorLog.push(logEntry)
}

Это делает мои ошибки хранение более портативный и более мощный. Реальное преимущество в моей голове здесь я могу создать событие, которое отправляет данные о Аякс все мои ошибки на моем сервере.

Дизайн зная, что код ошибки должен иметь объект куда-то глобальное для этого.рассчитывать на сохранение государства, если вы не сделаете этого специальный плагин в какие-то рамки или что-то.

Это действительно хранить ваши ошибки после того, как они происходят, не как хранить шаблона из них.

1
ответ дан 12 мая 2011 в 04:05 Источник Поделиться