敲除绑定处理程序传递对象数组
Knockout binding handler pass array of objects
是否可以为绑定处理程序传递带方括号的数组值?即:
<div data-bind="validator: [{class: RequiredValidator}, {class: EmailValidator}]"></div>
它适用于一个对象:
<div data-bind="validator: {class: RequiredValidator}"></div>
Class 值不可观察,只是 javascript 对象。
它抛出 Message: Unexpected token )
错误。
或者我需要一些其他语法?我可以用物体包裹它,但不喜欢。
我拍摄了这个问题的项目快照,可在此处获取:http://balin.maslosoft.com/array-validators/dev/validator.php
打开控制台,对象验证器将显示配置,而数组将失败。
这里是 fiddle 最小的例子:http://jsfiddle.net/piotr/fu8d0hm3/
您只需将 VALID value
设置为您正在传递的 key
即可。在您的情况下 RequiredValidator
未定义,因此请将其放在引号中以解决问题。
查看:
<div data-bind="validator: [{class: 'RequiredValidator'}, {class: 'EmailValidator'}]"></div>
viewModel:
ko.bindingHandlers.validator = {
init: function(element, valueAccessor) {
console.log(valueAccessor()); //check console window for o/p
}
}
ko.applyBindings();
检查样本here
它适用于这些。问题可能出在您的绑定处理程序中吗?
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>
原来是knockout-es5 modification for two-way bindings的问题。
原插件不受影响。我创建了 pull request 来解决这个问题。
问题是绑定预处理,如果传递数组值会产生无效代码。
是否可以为绑定处理程序传递带方括号的数组值?即:
<div data-bind="validator: [{class: RequiredValidator}, {class: EmailValidator}]"></div>
它适用于一个对象:
<div data-bind="validator: {class: RequiredValidator}"></div>
Class 值不可观察,只是 javascript 对象。
它抛出 Message: Unexpected token )
错误。
或者我需要一些其他语法?我可以用物体包裹它,但不喜欢。
我拍摄了这个问题的项目快照,可在此处获取:http://balin.maslosoft.com/array-validators/dev/validator.php
打开控制台,对象验证器将显示配置,而数组将失败。
这里是 fiddle 最小的例子:http://jsfiddle.net/piotr/fu8d0hm3/
您只需将 VALID value
设置为您正在传递的 key
即可。在您的情况下 RequiredValidator
未定义,因此请将其放在引号中以解决问题。
查看:
<div data-bind="validator: [{class: 'RequiredValidator'}, {class: 'EmailValidator'}]"></div>
viewModel:
ko.bindingHandlers.validator = {
init: function(element, valueAccessor) {
console.log(valueAccessor()); //check console window for o/p
}
}
ko.applyBindings();
检查样本here
它适用于这些。问题可能出在您的绑定处理程序中吗?
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>
原来是knockout-es5 modification for two-way bindings的问题。
原插件不受影响。我创建了 pull request 来解决这个问题。
问题是绑定预处理,如果传递数组值会产生无效代码。