【问题标题】:Knockout Validation - Dynamic Validation Message淘汰赛验证 - 动态验证消息
【发布时间】:2017-09-26 16:45:01
【问题描述】:

我正在使用“相等”验证规则。

self.FirstName = ko.observable();
self.Lastname = ko.observable();
self.ValidationMessage = ko.computed(function(){
    return 'This is my dynamic validation message. ' + self.FirstName() + ' ' + self.LastName()
});
self.MyComputed = ko.computed(function() {
    // Keep it simple for example purpose
    return true;
}).extend({ equal: { message: self.ValidationMessage, params: false } });

我想知道是否有任何方法可以根据计算值或其他可观察值使验证消息动态化。

【问题讨论】:

标签: javascript validation knockout.js


【解决方案1】:

你不需要self.ValidationMessage。而是使用function 作为消息,它将被动态调用。

function vm() {
  var self = this;
  self.FirstName = ko.observable();
  self.LastName = ko.observable().extend({
    equal: {
      message: function(params, observable) {
        return 'First Name: ' + params + ' and Last Name: ' + observable() + ' are not the same.';
      },
      params: self.FirstName
    }
  });
}

ko.applyBindings(new vm());
.validationMessage { display: block; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout-validation/2.0.3/knockout.validation.min.js"></script>

<input data-bind="textInput: FirstName"><input data-bind="textInput: LastName">

【讨论】:

  • 谢谢贾格。计算的可观察量在技术上也是函数,对吗?我只是想知道为什么传入 self.ValidationMessage 也不起作用。
  • message 不仅被调用,而且被参数调用,所以当你使用computed 时,它就像给它赋值一样。如果您仍然想使用computed,您可以通过包装在函数中来做到这一点。 message: function() { return self.yourComputed() }
猜你喜欢
  • 2013-06-23
  • 2012-02-18
  • 2014-05-28
  • 2014-12-04
  • 2013-08-29
  • 2012-11-04
  • 1970-01-01
  • 2023-03-09
  • 2014-02-21
相关资源
最近更新 更多