Javascript 敲除对象的双向绑定

Javascript 敲除对象的双向绑定,javascript,jquery,html,dom,knockout.js,Javascript,Jquery,Html,Dom,Knockout.js,我试图使用Knockout.js在javascript对象和一些DOM元素之间创建双向绑定。我希望我的对象反映DOM元素中的更改,反之亦然。我成功地实现了第一个目标,反之亦然,但我无法工作 当我在DOM输入中进行更改时,myPerson对象的属性也会相应地更改。下一步是手动更改这些属性,并自动查看de DOM输入中反映的这些更改。我尝试过使用映射插件,但到目前为止还没有雪茄。仅使用KO,仅更改myPerson对象的属性不会更改您的viewmodel,因此也不会更新DOM “KO方法”是将vie

我试图使用Knockout.js在javascript对象和一些DOM元素之间创建双向绑定。我希望我的对象反映DOM元素中的更改,反之亦然。我成功地实现了第一个目标,反之亦然,但我无法工作


当我在DOM输入中进行更改时,myPerson对象的属性也会相应地更改。下一步是手动更改这些属性,并自动查看de DOM输入中反映的这些更改。我尝试过使用映射插件,但到目前为止还没有雪茄。

仅使用KO,仅更改
myPerson
对象的属性不会更改您的viewmodel,因此也不会更新DOM

“KO方法”是将viewmodel(而不是
myPerson
与之分离)作为函数调用,然后更新viewmodel,例如:

myViewModel.firstName("TheNewFirstName");
现代浏览器上,您可以使用访问器函数在
myPerson
上定义属性,然后可以引发视图模型将关注的事件或类似事件,但这需要在ECMAScript5(~2009)中添加功能,这些功能在现代浏览器中存在,但在IE8及更早版本中不存在。它还意味着有效地拥有一个双视图模型(
myPerson
myViewModel

因此,在使用KO时,您通常只需要拥有viewmodel本身,并调用可观察对象来更新它们

下面是一个简单的例子“KO方式”:

var-vm={
计数器:高可观察(0)
};
应用绑定(vm,document.querySelector('div');
var timer=setInterval(函数(){
如果(vm.counter()>=20){
清除间隔(计时器);
}否则{
vm.counter(vm.counter()+1);
}
}, 1000);


当您的观察对象发生变化时,您是否希望
myPerson
对象发生变化??谢谢您的回答!使用您的铆钉示例,有没有办法将{counter}放在输入元素中而不是div中?@KirkOlson:Yup,看起来您使用了
rv值
绑定(它显示在网站的第一页上)(我不是铆钉专家):
myViewModel.firstName("TheNewFirstName");