【发布时间】:2013-03-16 04:23:14
【问题描述】:
我正在学习淘汰赛、Durandal 和 Breeze,感谢 John Papa 的 JumpStart SPA 视频,我很高兴。所以我检查了这个项目的代码,现在我正在尝试更改验证机制。
此时,当保存更改时,如果保存失败,我们会收集错误并显示 toast 并恢复错误。
我想要实现的是:
能够在视图中以红色(背景色)标记无效字段
当显示带有验证错误恢复的 toast 时(类似于:'保存失败:需要事务 Nr')我想用更友好的名称替换属性名称(类似于'保存失败:事务数字是必需的')
这是datacontext.js中验证的部分代码:
var saveChanges = function () {
return manager.saveChanges()
.then(saveSucceeded)
.fail(saveFailed);
function saveSucceeded(saveResult) {
log('Saved data successfully', saveResult, true);
}
function saveFailed(error) {
var msg = 'Save failed: ' + getErrorMessages(error);
logError(msg, error);
error.message = msg;
throw error;
}
};
function getErrorMessages(error) {
var msg = error.message;
if (msg.match(/validation error/i)) {
return getValidationMessages(error);
}
return msg;
}
function getValidationMessages(error) {
try {
//foreach entity with a validation error
return error.entitiesWithErrors.map(function (entity) {
// get each validation error
return entity.entityAspect.getValidationErrors().map(function (valError) {
// return the error message from the validation
return valError.errorMessage;
}).join('; <br/>');
}).join('; <br/>');
}
catch (e) { }
return 'validation error';
}
有人能指出我正确的方向吗?
提前致谢。
编辑:
要重现问题:单击左侧边栏上的 Transports + recherche avancee + 列表中的任何项目 + 右侧:清除一些输入(如 Numero d'affaire 如下截图所示),然后单击“Enregistrer”。然后调用保存按钮。在那里我需要检查 ko.validation.group 是否有无效输入,但它不起作用。
【问题讨论】:
-
如果您想在客户端保持良好的视图/视图模型分离和 MVVM 模式,我认为 Evan 引用的 Knockout Validation 是一个不错的选择,因为它可以验证视图模型数据。
标签: knockout.js breeze durandal