0

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

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

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

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

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

提前致谢!

4

1 回答 1

1

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

编辑:这是with基于我的替代品withlight,它不检查值(例如:http: //jsfiddle.net/mbest/rG5Xw/12/):

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;
于 2012-08-28T20:26:00.567 回答