knockout.js id处理bug?

时间:2012-08-28 09:09:53

标签: knockout.js

我想知道你是否有任何人遇到过以下问题,并且可能知道解决方法。

如果我在ko模板中进行'foreach'迭代并尝试使用'with'上下文修饰符,则如果'with'尝试,则ko无法处理迭代的第一项(是的,只有第一项)绑定到一个名为'id'的财产。

示例:http://jsfiddle.net/rG5Xw/8/

如果你运行它,它将不会显示第一项,但如果你将内部虚拟元素的'with'语句更改为'name',那么它将按预期工作。非常烦人......:S

有人知道如何解决这个问题吗?

提前致谢!

1 个答案:

答案 0 :(得分:1)

with旨在与对象一起使用。因此,它对真实性进行了简单的检查,认为零是假的。您可以通过将数字转换为字符串来解决此问题:http://jsfiddle.net/rG5Xw/11/

修改:以下是基于withlightwith的替代品,该ko.bindingHandlers['mywith'] = { 'init': function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) { var bindingValue = ko.utils.unwrapObservable(valueAccessor()); var innerContext = bindingContext['createChildContext'](bindingValue); ko.applyBindingsToDescendants(innerContext, element); return { 'controlsDescendantBindings': true }; } }; ko.virtualElements.allowedBindings.mywith = true; 未对值进行任何检查(例如:http://jsfiddle.net/mbest/rG5Xw/12/):

{{1}}