【问题标题】:Knockoutjs: the $data in foreach binding is not updating underlying elementKnockoutjs:foreach 绑定中的 $data 未更新底层元素
【发布时间】:2014-09-20 12:57:23
【问题描述】:

我有下面的js代码

$(document).ready(function () {
    var viewModel = {
        predefinedGrades: [
            ko.observable("Excellent"),
            ko.observable("Good"),
            ko.observable("OK"),
            ko.observable("Average"),
            ko.observable("Bad")],
        observable: ko.observable("good")
    };
    ko.applyBindings(viewModel);
});

以下是我的看法

<div data-bind="foreach: predefinedGrades">
    <input type="text" data-bind="value: $data, valueUpdate: 'keyup'"/>
</div>

<input type="text" data-bind="value: observable, valueUpdate: 'keyup'"/>

问题是当我更新foreach绑定的输入中的文本时,底层数组不会改变。但是,如果我使用绑定observable 的最后一个文本输入更改文本,则可观察字段可以在 keyup 事件之后更改。怎么会这样?我错过了什么?

【问题讨论】:

    标签: javascript knockout.js


    【解决方案1】:

    如果您在foreach 绑定中使用$rawData 而不是$data,它将按预期工作。

    From the docs

    $原始数据

    这是当前上下文中的原始视图模型值。通常这个 将与 $data 相同,但如果提供给 Knockout 的视图模型 被包裹在一个可观察对象中, $data 将是展开的视图模型, 并且 $rawData 将是 observable 本身。

    【讨论】:

    • 请注意,这是在 Knockout 3.0 中添加的。在以前的版本中,您必须使用其他方法来访问底层的 observable。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多