【问题标题】:Why is knockout.js textInput binding not working?为什么 knockout.js textInput 绑定不起作用?
【发布时间】:2014-10-20 10:55:21
【问题描述】:

取自documentation 并坚持fiddle 的示例不起作用。 代码 sn-p 完整性:

<p>Login name: <input data-bind="textInput: userName" /></p>
<p>Password: <input type="password" data-bind="textInput: userPassword" /></p>

ViewModel:
<pre data-bind="text: ko.toJSON($root, null, 2)"></pre>

<script>
    ko.applyBindings({
        userName: ko.observable(""),        // Initially blank
        userPassword: ko.observable("abc")  // Prepopulate
    });
</script>

我在隐身窗口中尝试过,认为某些浏览器扩展程序可能会弄乱它。没有运气。

预期行为是 viewModels 的 JSON 转储应随着任何输入字段中的每次击键更改而更新。

如果我切换到 value 绑定而不是 textInput 它会在输入焦点更改时更新。

有人遇到过吗?

【问题讨论】:

    标签: knockout.js


    【解决方案1】:

    textInput 绑定是在更高版本的 Knockout.JS (3.2.0) 中添加的。
    将更新后的库添加到您的小提琴中即可。

    【讨论】:

    • 你是对的!它来自这里github.com/knockout/knockout/pull/1160 我应该检查一下。谢谢!
    • 我遇到了同样的问题,不幸的是,jsfiddle 没有列出任何更新为 KO 3.0 的东西。手动添加 3.2 作为外部源,工作起来就像一个魅力! KO 文档确实应该提到最低版本,就像 jQuery 一样。
    • 同意@CoDEmanX,似乎他们更喜欢目前最新的人,这有时是不可能的。
    • 这里也一样。作为“ASP.NET MVC 4 Web 应用程序”创建的新项目包含 Knockout 2.2.0 - 并且 textInput 绑定不起作用。
    • 供参考 - 我使用的是 Durandal v2.1.0,它与 Knockout 3.1.0 一起提供。这就是我在这里的原因......
    【解决方案2】:

    如果您卡在旧版本的 Knockout 上,您可以使用 valueUpdate

    <input data-bind="value: firstName, valueUpdate:'afterkeydown'" />
    

    https://stackoverflow.com/a/4391419/1058292

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-05
      • 2013-05-05
      相关资源
      最近更新 更多