2
var validationMapping = { 

     emailAddress: { 
      create: function (options) { 
       return ko.observable(options.data).extend({ required: true }).extend({email:true}); 
      } 
     }, 
     emailAddressConfirm: { 
      create: function (options) { 
       return ko.observable(options.data).extend({ required: true }).extend({ email: true }) 
       .extend({equal: emailAddress});}}}; 

上面就是我使用映射模型时,如下KO.mapping + KO.validation,如何使用验证映射验证两个属性

$.post('getaccountdata', {}, 
     function (data) { 
      if (data != "") { 
       myViewModel = ko.validatedObservable(ko.mapping.fromJS(data, validationMapping)); 
       ko.applyBindings(myViewModel); 
      } 
     }); 

问题是这并未”我的验证映射t似乎工作。看起来传递给“相等”验证函数的emailAddress对象不是来自视图模型的可观察对象。指定“其他”可观察值的正确语法是什么?

+0

您可以显示相同功能的一些代码? – Overmachine 2013-04-04 21:49:01

回答

1

几个月后,但无论如何;) 我发现的唯一方法是绑定后延长验证:

... 
myViewModel = ko.validatedObservable(ko.mapping.fromJS(data, validationMapping)); 
ko.applyBindings(myViewModel); 
myViewModel().emailAddress.extend({ equal: myViewModel().emailAddressConfirm });