我想知道你是否有任何人遇到过以下问题,并且可能知道解决方法。
如果我在ko模板中进行'foreach'迭代并尝试使用'with'上下文修饰符,则如果'with'尝试,则ko无法处理迭代的第一项(是的,只有第一项)绑定到一个名为'id'的财产。
示例:http://jsfiddle.net/rG5Xw/8/
如果你运行它,它将不会显示第一项,但如果你将内部虚拟元素的'with'语句更改为'name',那么它将按预期工作。非常烦人......:S
有人知道如何解决这个问题吗?
提前致谢!
答案 0 :(得分:1)
with
旨在与对象一起使用。因此,它对真实性进行了简单的检查,认为零是假的。您可以通过将数字转换为字符串来解决此问题:http://jsfiddle.net/rG5Xw/11/
修改:以下是基于withlight
的with
的替代品,该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}}