Knockout绑定处理程序传递对象数组
Knockout binding handler pass array of objects
是否可以为绑定处理程序传递带有方括号的数组值?,即:
<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/
它适用于这些。问题可能出在绑定处理程序中?
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>
您只需要将VALIDvalue
设置为要传递的key
。在您的情况下,RequiredValidator
没有定义,所以请将其放在引号中以解决问题。
视图:
<div data-bind="validator: [{class: 'RequiredValidator'}, {class: 'EmailValidator'}]"></div>
view模型:
ko.bindingHandlers.validator = {
init: function(element, valueAccessor) {
console.log(valueAccessor()); //check console window for o/p
}
}
ko.applyBindings();
检查样本此处
事实证明,双向绑定的knockout-es5修改存在问题。
原始插件不受影响。我创建了pull请求来解决这个问题。
问题是绑定预处理,如果传递数组值,则会生成无效代码。
相关文章:
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 在Javascript中转换对象数组
- 在JavaScript中通过索引从对象数组中获取值
- Backbone虹吸以获取对象数组
- 如何在DataTables 2.1中迭代对象数组
- Javascript-根据赋值顺序,按键合并对象数组
- 将事件附加到对象/数组
- jQuery$.inArray()总是返回-1和一个对象数组
- javascript处理一个对象数组以获得一个新的对象数组
- javascript在数组中获取对象数组中键的所有不同值
- 在对象数组中查找多个值的d3范围
- Undercore.js获取对象数组中键对象的值
- 在mongoose中使用正则表达式在对象数组中进行查询搜索
- 如何通过json对象数组为嵌套对象赋值
- 如何循环通过2个对象数组并通过匹配id进行合并
- 为对象数组创建列表项
- 如何使用javascript合并两个对象数组
- JSON到对象数组,并向每个对象添加项
- JavaScript:从对象数组中获取唯一值及其计数
- 按不同项目对对象数组进行排序