动态挖空模板仅接受单个元素而不是数组

Dynamic knockout template only accepting single elements instead of an array

本文关键字:元素 单个 数组 动态      更新时间:2023-09-26

我们正在尝试设置一个挖空模板来延迟加载站点上"文件夹"的内容。我遇到了一个问题,即我传递给applyBindingAccessorsToNode函数的列表抛出错误,

ko.applyBindingAccessorsToNode($("#subnode-" + id)[0], {
        template: function () {
            return {
                name: "template-file-system-tree"
            }
        }
    }, ko.observableArray(testFileSystem[id]));

但是如果我只发送一个项目,它可以工作

ko.applyBindingAccessorsToNode($("#subnode-" + id)[0], {
        template: function () {
            return {
                name: "template-file-system-tree"
            }
        }
    }, testFileSystem[id][0]);

我没有运气找到 applyBindingAccessorsToNode 的文档,看看它是否不会接受列表......但是拥有一个不能接受项目列表的模板系统似乎毫无意义。

斯菲德尔

编辑:我的老板告诉我,他只打算让我们对"平面"列表使用淘汰赛,并在jquery中做到这一点。 我将根据 jsfiddle 代码检查答案,我们希望将来能为遇到此问题的任何人找到解决方案。

你可以检查applyBindingAccessorsToNode源的最后一个参数名称是viewModelOrBindingContext,这意味着KNOCKOUT期望你传递viewModel对象或ko.bindingContext的实例。

因此,您可以将例如对象{ fileSystemArray: testFileSystem[id] }作为最后一个参数传递。