验证动态挖掘可观察的ViewModel,必须将相同的viewmodel保存到DB

时间:2014-02-14 04:26:55

标签: jquery mvvm knockout.js

我有以下格式的视图模型:

var usersViewModel = function() {

 this.userdata = [
 { 
   UserNumber: "12", 
   UserName: "Jennifer",  
   Partitions: "01",
   Code: "2356", 
   Authority: "Standard User", 
   Keyfob: "Keyfob 03",
   ZwaveLock: false 
 },
 {
   UserNumber: "13",
   UserName: "Pinkman",
   Partitions: "03", 
   Code: "4234", 
   Authority: "Guest",
   Keyfob: "Keyfob 01",
   ZwaveLock: true 
 },
 {
   UserNumber: "14", 
   UserName: "Nolan", 
   Partitions: "02", 
   Code: "1233",   
   Authority: "Standard User",
   Keyfob: "Keyfob 02", 
   ZwaveLock: "false" 
 }];
};
ko.applyBindings(new usersViewModel());

如何对此进行客户端验证?

我有这些要求:

  • Usernumber必须介于1到100之间。
  • 用户代码只能是4位数。
  • 用户名应仅允许使用字符。

1 个答案:

答案 0 :(得分:0)

使用ko validation plugin,您的要求将通过以下验证可观察量来满足:

var UserDataElement = function (dataObj) {
    dataObj.UserName = ko.observable(dataObj.UserName).extend({
        pattern: '^[a-zA-Z]*$'
    })

    dataObj.Code = ko.observable(dataObj.Code).extend({
        minLength: 4
    })

    dataObj.UserNumber = ko.observable(parseInt(dataObj.UserNumber)).extend({
        min: 1,
        max: 100
    })
    return dataObj;
}

完成设置并显示任何前期错误:ko.validation.group(vm.userdata).showAllMessages()

有关完整实施的信息,请参阅fiddle。关于保存,ko.toJSON(vm)应该足够了。