Angular Xeditable - не может получить правильное значение для проверки с использованием события onbeforesave
Я пытаюсь добавить логику проверки к редактированию значений формата сообщений, которые мы используем. Я создал плункер здесь, чтобы показать проблему. Вот код для проверки фигурных скобок.
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
Событие Я получаю правильное значение, и проверка запускается, но он покажет / сохранит неверное значение, которое мне не нужно. Так как я могу обойти это? Любая помощь приветствуется.
- Не уверен, смогу ли я использовать отсрочку, пообещай решить эту проблему - но не уверен, если вообще возможно с Angular Xeditable?
1 ответ
Вот мой поршень с ним работает:
По сути, я изменил ваш 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";
}
}
};