如何"绑定" (存储)可观察到的$ index可观察到的?

时间:2014-09-26 12:29:58

标签: javascript knockout.js

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

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

1 个答案:

答案 0 :(得分:0)

不应该怎么做。你应该在填充外部列表的循环中设置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