一、双向绑定

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. </head>
  5. <body>
  6. <input type="text" v-model="userName"><br/>
  7. <input type="text" v-model="userName"><br/>
  8. <input type="text" v-model="userName">
  9. </body>
  10. <script>
  11. function setModel(name){
  12. var vModels=document.querySelectorAll('[v-model="'+name+ '"]');
  13. Object.defineProperty(window,name,{
  14. get:function(){
  15. return vModels[0].value;
  16. },
  17. set:function(newValue){
  18. vModels.forEach(function(model){
  19. model.value=newValue;
  20. });
  21. }
  22. });
  23. vModels.forEach(function(model){
  24. model.addEventListener('input',function(e){
  25. window[name] = e.target.value;
  26. });
  27. });
  28. }
  29. setModel('userName');
  30. </script>
  31. </html>

二、数据监听

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title></title>
  5. </head>
  6. <body>
  7. <div id="app">
  8. <input type="text" id="txt">
  9. <p id="show"></p>
  10. </div>
  11. </body>
  12. <script type="text/javascript">
  13. var obj={}
  14. document.addEventListener('keyup',function(e){
  15. obj.txt=e.target.value
  16. })
  17. Object.defineProperty(obj,'txt',{
  18. get:function(){
  19. return obj
  20. },
  21. set:function(newValue){
  22. document.getElementById('txt').value=newValue
  23. document.getElementById('show').innerHTML=newValue
  24. }
  25. })
  26. </script>
  27. </html>
  28. </html>