AngularJS数据绑定与KnockoutJS数据绑定

时间:2013-12-05 09:47:39

标签: javascript angularjs data-binding knockout.js

由于某些内部原因,我需要将我的AngularJS应用程序转换为KnockoutJS,所以最近我开始使用Knockout。

我注意到的第一件事是与Angular的绑定是立即的,就像char-by-char:http://jsfiddle.net/anvarik/3cnV9/

<div ng-app ng-controller="MainCtrl">
    <p>First Name: {{first}}</p>
    <p>Last Name: {{second}}</p>

    <p>First Name: <input ng-model="first" /> </p>
    <p>Last Name: <input ng-model="second" /> </p>
</div>     

另一方面,敲除了整个输入并在最后绑定:http://jsfiddle.net/anvarik/CxBy9/

<div>
    <p>First Name: <strong data-bind="text:firstName"></strong></p>
    <p>Last Name: <strong data-bind="text:lastName"></strong></p>

    <p>First Name: <input data-bind="value:firstName"/> </p>
    <p>Last Name: <input data-bind="value:lastName"/> </p>
</div>

如果有人可以向我解释其背后的原因,我将很高兴。我想在Knockout中进行绑定,就像它在Angular中一样,如何实现呢?

1 个答案:

答案 0 :(得分:2)

您需要在knockout中添加一个选项(valueUpdate选项),以获得与angular中相同的行为。示例:

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

默认情况下,值会在“更改”事件中更新。请参阅文档:knockoutjs.com/documentation/value-binding.html