Kendo ui自定义验证不在Angularjs应用程序中调用create方法

时间:2016-02-05 12:23:26

标签: angularjs kendo-ui

我是kendoui领域的angularjs新手。在添加自定义验证之前,我已经添加了自定义验证以检查名称是否已存在,但是在自定义验证之后,每个方法都完美地工作但是在自定义验证之后,自定义验证检查重复数据并显示错误消息。

但是对于数据库中不存在的新角色名称。我在验证方法中写返回true但是不调用webapi的create方法。我检查了我的代码我没有发现任何错误,为什么创建方法没有调用。

 <div id="grid"></div>
    <script>
        var remoteDataSource = new kendo.data.DataSource({
            transport: {
                read: {
                    url: "http://localhost:8742/api/foo",
                    dataType: "json"
                },
                create: {
                    url: "http://localhost:8742/api/foo",
                    dataType: "json",
                    type: "POST"

                },
                update: {
                    url: "http://localhost:8742/api/foo",
                    dataType: "json",
                    type: "PUT"
                },
                destroy: {
                    url: "http://localhost:8742/api/foo",
                    dataType: "json",
                    type: "DELETE"
                }
            },
            schema: {
                model: {
                    id: "Id",
                    fields: {
                        Id: { editable: false, type: "number" },
                        Name: {
                            validation: {
                                required: true,
                                customValidation: function (input) {

                                   var data = remoteDataSource.data();
                                    if (input.is("[name='Name']") && input.val() != "") {
                                        for (var i = 0; i < data.length; i++) {

                                            if (val == data[i].Name) {
                                                dup = data[i].Name;
                                                input.attr('data-customValidation-msg', 'Duplicate Name')
                                                return false;
                                            }

                                        }

                                    }
                                    return true;

                                }


                            }
                        }
                    }
                }
            }
        });


        $('#grid').kendoGrid({
            dataSource: remoteDataSource,
            height: 500,
            toolbar: [{name:"create", text: "Create new foo"}],
            editable: "popup",
            columns: [
                    {
                        field: "Id",
                        title: "Id"
                    },
                    {
                        field: "Name",
                        title: "Name"
                    },
                    {
                        command: ["edit","destroy"]
                    }
                ]
        });

1 个答案:

答案 0 :(得分:1)

使用此代码替换您的自定义验证。

customValidation: function (input) {
                                    var errorCount = 0;
                                    var data = remoteDataSource.data();
                                    input.attr('data-customValidation-msg','Duplicate Name');
                                    if (input.is("[name='Name']") && input.val() != "") {
                                        for (var i = 0; i < data.length; i++)
                                        {

                                            if ($.trim(input.val()) == data[i].Name)
                                            {
                                                  errorCount = 1 ;
                                            }
                                            else
                                            {
                                                  errorCount = errorCount + 1;
                                            }
                                        }
                                        if(errorCount == data.length)
                                        {
                                            return errorCount = 1;
                                        }
                                        else
                                        {
                                            return errorCount = 0;
                                        }

                                    }

                                }