我正在尝试添加验证逻辑来编辑我们使用的消息格式值。我创造了plunker here来展示这个问题。这是大括号验证的代码。
vm.formatCheck = function (resource) {
console.log(resource.Value);
if (resource.Value.indexOf('{') > -1 || resource.Value.indexOf('}') > -1) {
var x = resource.Value.split('{').length - 1;
var y = resource.Value.split('}').length - 1;
if ((x + y) % 2 === 1) {
alert("Incorrect Message format");
return;
}
}
};
示例:如果编辑第一个值({JobRole} for {Organisation}
)并删除尾随花括号({JobRole} for {Organisation
)
alert("Incorrect Message format");
从未显示,因为它获得原始值 - {JobRole} for {Organisation}
而不是{JobRole} for {Organisation
如果我将验证逻辑移动到onaftersave
事件,我会得到正确的值和验证,但它会显示/保存不正确的值,这是我不想要的。那我怎么能解决这个问题呢?任何帮助赞赏。
这是我的使用它的plunker:Plunker
基本上,我将你的HTML更改为:
<a href="#" e-name="resource" editable-textarea="res.Value" e-rows="5" e-cols="30"
onbeforesave="vm.formatCheck($data)"
onaftersave="vm.onGridItemChanged(res)">{{ res.Value || 'empty' }}</a></a>
我正在传递$ data而不是'res'。 $ data是您实际更改的对象属性的值。
并在控制器中,您的验证功能。 '资源'现在是$ data,其中包含您尝试更改的属性的值。所以你检查它,然后你返回一条错误信息。如果您不希望在字段旁边显示错误消息,请返回“”;
vm.formatCheck = function (resource) {
console.log(resource);
if (resource.indexOf('{') > -1 || resource.indexOf('}') > -1) {
var x = resource.split('{').length - 1;
var y = resource.split('}').length - 1;
if ((x + y) % 2 === 1) {
alert("Incorrect Message format");
return "Incorrect Message format";
}
}
};