请严格把这个问题当作教育问题来对待。我仍然有兴趣听到新的答案和想法来实现这一点
如何用JavaScript实现双向数据绑定?
通过数据绑定到DOM,我的意思是,例如,拥有一个带有属性b
的JavaScript对象a
。然后有一个<input>
DOM元素(例如),当DOM元素改变时,a
也会改变,反之亦然(也就是说,我的意思是双向数据绑定)。
下面是AngularJS的一个图:
JavaScript是这样的:
var a = {b:3};
然后输入(或其他形式)元素,如:
<input type='text' value=''>
我希望输入的值是a.b
的值(例如),当输入文本发生变化时,我希望a.b
也发生变化。当JavaScript中的a.b
改变时,输入也会改变。
在纯JavaScript中完成这个任务的基本技术是什么?
具体来说,我想要一个好的答案参考:
我是一个大粉丝的胡子,所以我尝试使用它的模板。然而,我在尝试执行数据绑定本身时遇到了问题,因为Mustache将HTML处理为字符串,所以在我得到它的结果后,我没有引用到我的视图模型中的对象在哪里。我能想到的唯一解决办法是用属性修改HTML字符串(或创建DOM树)本身。我不介意使用不同的模板引擎。
基本上,我有一种强烈的感觉,我把手头的问题复杂化了,有一个简单的解决办法。
注意:请不要提供使用外部库的答案,特别是那些数千行代码的答案。我用过(而且喜欢!)AngularJS和KnockoutJS。我真的不想要“使用框架x”这种形式的答案。最理想的情况是,我希望未来不知道如何使用许多框架的读者能够自己掌握如何实现双向数据绑定。我不期待一个完整的的答案,但一个能让人理解的答案。