gpt4 book ai didi

javascript - 绑定(bind)处理程序中的 knockout 范围问题

转载 作者:行者123 更新时间:2023-12-03 07:27:53 25 4
gpt4 key购买 nike

我有一个 View 模型 MyClass,带有一个数组属性 MyList,而 MyList 是一个具有 Prop1 和 MySubList 等属性的对象。

我有一个<div data-bind="with: MyClass">我在其中建立了一张 table 。我希望表的列可以排序,所以大多数 <th>看起来像这样:

<th data-bind="sort: { myArray: MyList, myProperty: 'Prop1' }">Prop One</th>

我有一个用于上述 sort 的 ko.bindingHandler ,它通过 myArray 运行,对 myProperty 进行排序。这一切都运行良好。

当需要处理 MySubList 的条目时属性,我想创建可变数量的列,每个列对应 MySubList 中的每一项.

现在,从 MyClass 的一个实例另一个是 MyList 中的项目数可能会有所不同,但在 MyList 的各个项目之内, MySubList 中的项目数是固定的,因此我可以可靠地从任意一个 MyList 确定我需要的列数元素。

所有这些项目都是可观察的。

因此,为了提供可变的列数,我有以下构造:

<!-- ko foreach: { data: MyList()[0].MySubList, as: 'subList' -->
<th data-bind="sort: { myArray: MyList, myProperty: 'SomeSubListProperty' }"></th>
<@-- /ko -->

这些列效果很好。但问题是:在 sort 中处理程序,MyList 未定义。 MySubList 也是。由于 MyList 对于其他 <th> 不是未定义的上面,我的猜测是 ko foreach 引入了一个新的作用域。当然,MyList 在实际 foreach 语句的范围内,因为 data有效为 subList 。因此,我正在寻找一种方法将对 MyList 的良好引用传递到 sort 中。

这足以继续吗?

最佳答案

由于您处于循环中,您已经更改了范围,因此您需要从循环访问父范围,这可能会有所帮助:

<!-- ko foreach: { data: MyList()[0].MySubList, as: 'subList' -->
<th data-bind="sort: { myArray: $parent.MyList, myProperty: 'SomeSubListProperty' }"> </th>
<@-- /ko -->

关于javascript - 绑定(bind)处理程序中的 knockout 范围问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35925548/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com