Knockout JS验证不起作用

时间:2015-06-23 07:13:38

标签: javascript asp.net-mvc knockout.js

我是Knockout JS的新手。我想在KO中应用验证。我使用过plugin knockout.validation.min.js。我已经像这样实现了它但没有工作

我的视图模型

 $(document).ready(function myfunction() {

        ko.applyBindings(new EmployeeKoViewModel());

    })
    var EmployeeKoViewModel = function () {
    var self = this;
        self.EmpId = ko.observable()
        self.Name = ko.observable("").extend({ required: { message: "please enter employee name " } });
        self.City = ko.observable("").extend({ required: { message: "please enter employee city " } });
        self.Employees = ko.observableArray();


             //GetEmployees();
            var EmpData = {
                EmpId: self.EmpId,
                Name: self.Name,
                City: self.City,

            };
            function GetEmployees() {
                $.ajax({
                    type: "GET",
                    url: "/Employee/About",
                }).done(function (data) {

                    self.Employees(data);
                }).error(function (ex) {
                    alert("Error");
                });
            }
        self.save = function () {
            var EmployeeKoViewModel.errors = ko.validation.group(self);
            if (!EmployeeKoViewModel.errors().length <= 0) {
                EmployeeKoViewModel.errors.showAllMessages();
                return false;
            }
            $.ajax({
                type: "POST",
                url: "/Employee/Save",
                data: ko.toJSON(EmpData),
                contentType: "application/json",
                success: function (data) {
                    self.EmpId(data.EmpId);
                    GetEmployees();

                },
                error: function () {
                    alert("Failed");
                }
            });
            //Ends Here
        };
}

当我评论GetEmployees()方法但没有使用它时,我创建了fiddle它正在工作

1 个答案:

答案 0 :(得分:1)

在这一行

var EmployeeKoViewModel.errors = ko.validation.group(self);

您正在尝试创建变量,但语法就像创建一个具有属性的对象,该属性当然是无效的。为了解决这个问题,您可以先初始化对象:

var EmployeeKoViewModel = {};
EmployeeKoViewModel.errors = ko.validation.group(self);
if (!EmployeeKoViewModel.errors().length <= 0) {
    EmployeeKoViewModel.errors.showAllMessages();
    return false;
}

这是一个有效的jsFiddle