目录
 
  
 
 
self
 
简单讲解
 
 
1. 视图影响数据
 
 
<body>
	
	<input type="text" id="ipt">
	<script>
		
		var store = {
			info: ''
		}
		var ipt = document.querySelector('#ipt')
		ipt.addEventListener('keyup', function(e) {
			
			
			store.info = e.target.value
			
		})
	</script>
</body>
 
2. 数据影响视图
 
 
<body>
	
	<input type="text" id="ipt">
	<script>
		
		var store = {
			info: ''
		}
		var ipt  = document.querySelector("#ipt")
		Object.defineProperty(store, "info", {
			set: function(newv) {
				
				console.log(newv)
				ipt.value = newv
			}
		})
	</script>
</body>
 
3. 视图数据双向影响
 
 
 
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    
    <input type="text" id="ipt" />
    
    <script>
      
      var store = {
        info: ''
      }
      var temp
      var ipt = document.querySelector('#ipt')
      var content = document.querySelector('#content')
      ipt.addEventListener('keyup', function(e) {
        console.log('"触发键盘事件"----', '触发键盘事件')
        store.info = e.target.value
        
      })
      Object.defineProperty(store, 'info', {
        
        set: function(newv) {
          console.log('set方法调用------', 'set方法调用')
          console.log('set方法中 newv ------', newv)
          ipt.value = newv
          
          temp = newv
        },
        
        get: function() {
          console.log('get方法调用------', 'get方法调用')
          
          return temp
        }
      })
    </script>
  </body>
</html>
 
页面展示
 

 
百度
 
 
<!DOCTYPE html>
<html>
  <head>
    <title>Vue.js 双向绑定示例</title>
  </head>
  <body>
    <div id="app">
      <input v-model="message" placeholder="编辑我" />
      <p>输入的消息是: {{ message }}</p>
    </div>
    <script src="https://unpkg.com/vue@2.6.14/dist/vue.js"></script>
    <script>
      var vm = new Vue({
        el: '#app',
        data: {
          message: ''
        }
      })
      
      let data = {}
      Object.defineProperty(data, 'message', {
        get() {
          return vm.message
        },
        set(newValue) {
          vm.message = newValue
        }
      })
      
      
    </script>
  </body>
</html>
 
