【问题标题】:valueUpdate binding for input does not work输入的 valueUpdate 绑定不起作用
【发布时间】:2013-03-27 17:22:52
【问题描述】:

我有一个包含元素的设置页面。每个元素都绑定到 ViewModel 属性。

我正在尝试实现设置的编辑和保存。

function saveSettings() {
    var new_settings = {};
    new_settings.property1 = settingsViewModel.settings.property1();
    new_settings.property2 = settingsViewModel.settings.property2();
    new_settings.property3 = settingsViewModel.settings.property3();
    .........
}

如果 的内容没有被修改 - 那么它运作良好。但是对于用户更改内容的输入,我收到错误“对象的属性 xxx 不是函数”。似乎我的 Viewmodel 和绑定在元素中发生更改后被破坏。

我的绑定如下:

 <input data-bind="value: settings.property1, valueUpdate: 'afterkeydown'" />

我还尝试了“keyup”、“keypress”、“input” - 没有任何效果。

有什么想法吗?

【问题讨论】:

    标签: knockout.js


    【解决方案1】:

    如果您只是想将您的视图模型转换为 JSON 发送到服务器,可以在上面使用 ko.toJSON,或者如果您需要更多控制,使用映射插件来做同样的事情?

    【讨论】:

    • ViewModel 的属性是可观察的。但我正在尝试创建一个新对象,用我的 ViewModel 中的值填充它,然后通过 POST 请求发送这个对象。所以我不需要一个可以观察的新对象,我只想从我的 ViewModel 的 observable 属性中获取数据
    • 您为什么不直接使用 ko.toJSON 来获取要发布的对象,或者如果您需要更多控制,请使用映射插件来做同样的事情?
    • 顺便说一句,您的错误消息确实表明您尝试从中获取数据的任何内容都不是可观察的。
    猜你喜欢
    • 2015-06-05
    • 2017-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-10
    • 2021-01-18
    • 1970-01-01
    相关资源
    最近更新 更多