是否有一种干净的方法可以使用KnockoutJS将observable的初始值绑定到dom元素?
我知道你可以通过绑定到不可观察的方式来实现这一点,但我宁愿不创建一个多余的属性来保存另一个可观察属性的初始值。
我试过这个,但无济于事 - 每次更改都会更新该属性
<input type="text" id="tbName"
data-bind="value:name, attr: { 'data-initialnamevalue': ko.utils.unwrapObservable($data.name()) }" />
答案 0 :(得分:1)
虽然我同意上面的Zero21xxx,但我猜你可以使用自定义绑定来提供init方法,但没有更新方法。
不确定是否值得努力而不仅仅是添加另一个属性。
以下是我的意思的简单示例:http://jsfiddle.net/ZkFRu/3/
第一段绑定属性的当前值,第二段绑定初始值。单击该按钮会增加属性。
答案 1 :(得分:0)
您可以通过添加括号直接绑定到可观察值而不是可观察值,以便在第一次绑定时注入该值。当元素被更新时,它不会更新observable,因为绑定是在值而不是observable上(即它不知道如何调用observable函数来设置值)。
<input type="text" id="tbName" data-bind="value: name()" />