얻은 메타 데이터를 사용하여 knockout (http://stackoverflow.com/questions/13662446/knockout-validation-using-breeze-utility)에서 유효성 검사 규칙을 만드는 방법에 대한 예제를 개선했습니다. 엔티티로 그 바람 삽입 유효성 검사기 :번역 breeze 유효성 확인 메시지
function addValidationRules(entity) {
var entityType = entity.entityType;
console.log(entityType);
if (entityType) {
for (var i = 0; i < entityType.dataProperties.length; i++) {
var property = entityType.dataProperties[i];
var propertyName = property.name;
var propertyObject = entity[propertyName];
var validators = [];
for (var u = 0; u < property.validators.length; u++) {
var validator = property.validators[u];
var nValidator = {
propertyName: propertyName,
validator: function (val, other) {
var error = this.innerValidator.validate(val, { displayName: this.propertyName });
this.message = error ? error.errorMessage : "";
return error === null;
},
message: "",
innerValidator: validator
}
validators.push(nValidator);
}
propertyObject.extend({
validation: validators
});
}
for (var i = 0; i < entityType.foreignKeyProperties.length; i++) {
var property = entityType.foreignKeyProperties[i];
var propertyName = property.name;
var propertyObject = entity[propertyName];
var validators = [];
for (var u = 0; u < property.validators.length; u++) {
var validator = property.validators[u];
var nValidator = {
propertyName: propertyName,
validator: function (val, other) {
var error = this.innerValidator.validate(val, { displayName: this.propertyName });
this.message = error ? error.errorMessage : "";
return error === null;
},
message: "",
innerValidator: validator
}
validators.push(nValidator);
}
propertyObject.extend({
validation: validators
});
if (!property.isNullable) {
//Bussiness Rule: 0 is not allowed for required foreign keys
propertyObject.extend({ notEqual: foreignKeyInvalidValue });
}
}
}
};
내가 지금 필요한 것은 나의 언어로 오류 메시지를 번역하고는 knockout-에 포함 된 유사 산들 바람하는 기능을 포함 할 수있을 것인지 궁금 해서요 메시지 번역 확인 :
//quick function to override rule messages
ko.validation.localize = function (msgTranslations) {
var msg, rule;
//loop the properties in the object and assign the msg to the rule
for (rule in msgTranslations) {
if (ko.validation.rules.hasOwnProperty(rule)) {
ko.validation.rules[rule].message = msgTranslations[rule];
}
}
};
//#endregion
제안 사항이 추가되었습니다. http://breezejs.uservoice.com/forums/173093-breeze-feature-suggestions/suggestions/3550098-create-function-to-translate-error-messages –
이 구성 객체를 보았습니다. , 그러나 바람이 산산조각 난 속도로 매번 그 선을 대체해야하는 것은 지루해 보였다. –
소스를 만질 필요가 없습니다. breeze가로드 된 후 소스를 직접 업데이트 할 수 있습니다. –