在Knockout中刷新不可观察的绑定

时间:2013-09-06 22:31:21

标签: javascript knockout.js coffeescript

我有一组对象。该集合是一个observableArray,因为我希望在集合大小发生变化时更新我的​​视图。

我不想让集合项中的字段可观察,因为它们几乎总是常量,我不想要observables的开销和丑陋的语法。

但是有一种非常罕见的操作需要更新列表中所有元素的值。

我不介意在这种情况下(几秒钟)有性能损失,但我不知道如何“重新绑定”整个列表并刷新绑定。

我尝试在列表中使用valueHasMutated,但没有达到预期的效果。我简化了对问题的看法。

class Item
    constructor: (value) ->
        @value = value

class ItemsList
    constructor: () ->
        @items  = ko.observableArray (new Item(1) for number in [1..10])

    rareOperation: () =>
        item.value = item.value + 1 for item in @items()
        @items.valueHasMutated()

ko.applyBindings( new ItemsList() )

http://jsfiddle.net/EXkWg/2/

我知道这不是Knockout的正常用例,正确的答案是使用observable,但在这种情况下我更喜欢别的东西。

0 个答案:

没有答案