KnockoutJS - 仅绑定初始值

时间:2012-04-23 20:28:47

标签: javascript knockout.js

是否有一种干净的方法可以使用KnockoutJS将observable的初始值绑定到dom元素?

我知道你可以通过绑定到不可观察的方式来实现这一点,但我宁愿不创建一个多余的属性来保存另一个可观察属性的初始值。

我试过这个,但无济于事 - 每次更改都会更新该属性

<input type="text" id="tbName" 
  data-bind="value:name, attr: { 'data-initialnamevalue': ko.utils.unwrapObservable($data.name()) }" />

2 个答案:

答案 0 :(得分:1)

虽然我同意上面的Zero21xxx,但我猜你可以使用自定义绑定来提供init方法,但没有更新方法。

不确定是否值得努力而不仅仅是添加另一个属性。

以下是我的意思的简单示例:http://jsfiddle.net/ZkFRu/3/

第一段绑定属性的当前值,第二段绑定初始值。单击该按钮会增加属性。

答案 1 :(得分:0)

您可以通过添加括号直接绑定到可观察值而不是可观察值,以便在第一次绑定时注入该值。当元素被更新时,它不会更新observable,因为绑定是在值而不是observable上(即它不知道如何调用observable函数来设置值)。

<input type="text" id="tbName" data-bind="value: name()" />