Angular Xeditable - 使用onbeforesave事件无法获得正确的验证值

时间:2017-12-20 15:49:29

标签: javascript angularjs validation angular-xeditable

我正在尝试将验证逻辑添加到我们使用的消息格式值的编辑中。我创建了plunker here来显示问题。这是大括号验证的代码。

target_link_libraries()

示例:如果您编辑第一个值(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事件,我会获得正确的值并验证,但它会显示/保存不正确的值,我想要。那我怎么能解决这个问题呢?任何帮助表示赞赏。

  • 不确定我是否可以使用延迟,承诺解决此问题 - 但不确定是否可以使用Angular Xeditable?

1 个答案:

答案 0 :(得分:1)

以下是我的傻瓜工作: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而不是&#39; res&#39;。 $ data是您实际更改的对象属性的值。

在控制器中,验证功能。 &#39;资源&#39;现在是$ data,其中包含您尝试更改的属性的值。所以你检查它,然后你返回一条错误信息。如果您不希望在字段旁边显示错误消息,请返回&#34;&#34;;

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";
            }

        }
    };