2

是否可以为绑定处理程序传递带有方括号的数组值?,即:

<div data-bind="validator: [{class: RequiredValidator}, {class: EmailValidator}]"></div>

它适用于一个对象:

<div data-bind="validator: {class: RequiredValidator}"></div>

类值是不可观察的,只是 javascript 对象。

它抛出Message: Unexpected token )错误。

或者我需要一些其他语法?我可以用对象包裹它,但不喜欢。

我为这个问题拍摄了项目快照,可在此处获得:http: //balin.maslosoft.com/array-validators/dev/validator.php

打开控制台,对象验证器将显示配置,而数组将失败。

这是最小的例子:http: //jsfiddle.net/piotr/fu8d0hm3/

4

3 回答 3

2

它适用于这些。问题可能出在您的绑定处理程序中吗?

ko.bindingHandlers.validator = {
  init: function(el, va) {
    var value = va();
    console.debug(value);
  }
};

vm = {
  something: ko.observable('hi')
};

ko.applyBindings(vm);
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<div data-bind="validator: ['one']"></div>
<div data-bind="validator: [something()]"></div>
<div data-bind="validator: [{class: something()}, {class:'whatever'}]"></div>

于 2015-12-09T13:31:33.723 回答
2

您只需要为您传递的 VALID 设置一个VALID value即可。key由于您的情况RequiredValidator未定义,因此请保留在引号中以解决问题。

看法:

<div data-bind="validator: [{class: 'RequiredValidator'}, {class: 'EmailValidator'}]"></div>

视图模型:

ko.bindingHandlers.validator = {
  init: function(element, valueAccessor) {
    console.log(valueAccessor()); //check console window for o/p
  }
}
ko.applyBindings();

在这里查看样本

于 2015-12-09T11:15:33.600 回答
0

原来是双向绑定的knockout-es5修改有问题。

原插件不受影响。我创建了拉取请求来解决这个问题。

问题在于绑定预处理,如果传递了数组值,则会产生无效代码。

于 2015-12-16T07:16:40.880 回答