vue原理与实现-输入框

说明

使用 JavaScript 模拟 Vue,实现渲染,数据改变时,能够同步显示到输入框上

html

  1. <div id="app">
  2. <input type="text" v-model="name" />
  3. </div>

JavaScript

  1. <script type="text/javascript">
  2. var data = {
  3. name : "杜子腾"
  4. }
  5. var appHTML = document.getElementById("app").innerHTML
  6. // 用js实现vue的功能
  7. // 渲染
  8. document.querySelector('[v-model="name"]').value = data.name
  9. // 双向绑定之一,当data中的属性改变时,同步显示到网页上
  10. // data 对象的 name 属性的 原值
  11. var nameData = data.name
  12. // 监听 data 对象的 name属性
  13. Object.defineProperty(data,"name",{
  14. // 访问 data 的 name 属性时,就会触发执行该函数
  15. get:function(){
  16. return nameData
  17. },
  18. // 改变 data 的 name 属性时,就会触发执行该函数
  19. set:function(newValue){
  20. nameData = newValue
  21. document.querySelector('[v-model="name"]').value = data.name
  22. // console.log(" name 的值改变了,新值是:",newValue)
  23. }
  24. })
  25. // 双向绑定之二:输入框的内容改变时,修改 data 中的数据
  26. document.querySelector('[v-model="name"]').addEventListener("keyup",function(e){
  27. data.name = e.target.value
  28. })
  29. </script>

原文出处:https://malaoshi.top/show_1IX6b9ahXFVB.html