【问题标题】:Validating a dynamic knockout observable ViewModel, same viewmodel has to be saved to DB验证动态淘汰可观察视图模型,必须将相同的视图模型保存到数据库
【发布时间】:2014-03-13 07:29:33
【问题描述】:

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

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());

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

我有这些要求:

  • 用户编号必须介于 1 到 100 之间。
  • 用户代码只能是 4 位数字。
  • 用户名只能使用字符。

【问题讨论】:

  • 查看淘汰赛验证插件;它被广泛使用,非常稳定,这里有很多关于它的问题和答案..

标签: jquery mvvm knockout.js


【解决方案1】:

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

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) 就足够了。

【讨论】:

  • 我需要一个视图模型,以便实现如下功能,如下面的小提琴所示:jsfiddle.net/Z26U3/102 在编辑行时,视图模型应该使用编辑后的值进行更新
猜你喜欢
  • 1970-01-01
  • 2013-02-18
  • 1970-01-01
  • 1970-01-01
  • 2011-12-21
  • 1970-01-01
  • 2015-08-17
  • 1970-01-01
  • 2012-04-17
相关资源
最近更新 更多