如何“;绑定”;(存储)我可观察到的$指数

How to "bind" (store) the $index observable to my observable?

本文关键字:观察 指数 绑定 存储 如何      更新时间:2023-09-26

我有一个foreach绑定,在我的数据中有一个可观察的Level。如何将$index值存储在我的Level observable中?我需要它,因为数组转到服务器端脚本,我不希望在最后保留顺序。

我已经在谷歌上搜索了一段时间,但还没有找到任何相关的答案

这不是应该做的。您应该在填充外部列表的循环中设置Level的值(您应该在那里有一个索引),或者在填充列表时创建一个函数来执行此操作。

如果您坚持,您可以创建一个执行指令的bindingHandler,并在foreach绑定开始时使用它:

// JS
ko.bindingHandlers.setter = {
    init: function(element, valueAccessor) {
        valueAccessor();
    }
}
// HTML
<div data-bind="foreach: list">
    <span data-bind="setter: Level($index())"></span>
    ... the rest of the code ...
</div>

但这不是一个好主意。当可观察数组发生变化时,foreach绑定将再次运行,并且不能保证Level的值保持不变。

演示:Plunkr