3.2 Vue 实例

2018-05-27  本文已影响16人  panw3i

import Vue from 'vue'

const app = new Vue({
  // el: '#root',
  template: '<div ref="div">{{text}} {{obj.a}}</div>',

// data里面注册数据响应式绑定
  data: {
    text: 0,
    obj: {}
  }
  // watch: {
  //   text (newText, oldText) {
  //     console.log(`${newText} : ${oldText}`)
  //   }
  // }
  methods:{
        this.$nextTick(function () {
            // DOM 现在更新了
            // `this` 绑定到当前实例
             this.doSomethingElse()
        })
}, 1000);

});

// 将Vue 实例挂载到指定的节点
app.$mount('#root');

let i = 0;
setInterval(() => {
  i++
  // app.text += 1
  // app.text += 1
  // app.text += 1
  // app.text += 1
  // app.text += 1
  // app.obj.a = i
// 通过实例方法设置响应式数据
  app.$set(app.obj, 'a', i)
  // app.$forceUpdate()

  // app.$data.text += 1;


// 实例的数据
console.log(app.$data)

// 实例的props
console.log(app.$props)

// 实例的挂载的节点
 console.log(app.$el)

// 实例的属性
 console.log(app.$options)
 
// 无法通过 $options赋值
app.$options.data.text += 1

// render方法 
app.$options.render = (h) => {
     return h('div', {}, 'new render function')
 }

// 实例的根节点
console.log(app.$root === app)

// 实例的子组件
console.log(app.$children)

// 实例的slot
console.log(app.$slots)

// 实例的作用域slot
console.log(app.$scopedSlots)

// 对应的html节点或者组件
console.log(app.$refs)

// 服务端渲染判断
console.log(app.$isServer)

// 实例的方法 
 const unWatch = app.$watch('text', (newText, oldText) => {
   console.log(`${newText} : ${oldText}`)
 })

// 调用注册后的返回的方法即可注销掉这个watch方法 
 setTimeout(() => {
  unWatch()
 }, 2000)


// 绑定实例方法 , $once 只监听一次
app.$once('test', (a, b) => {
   console.log(`test emited ${1} ${b}`)
 })

// 触发实例方法 
setInterval(() => {
  app.$emit('test', 1, 2)
 }, 1000)

 app.$forceUpdate()

上一篇下一篇

猜你喜欢

热点阅读