我的vue学习之路

#vue2.5
1.特性:双向绑定 spa单页面 


2..vue文件包含(template即html,script即js,style即css)

3.data:vue的对象数据、 methods:vue的对象方法、watch:设置vue对象的监听方法
模板指令:
  v-text(文字)、v-html(文字加标签)、{{}} ==》数据渲染
  v-if(动态)、v-show(非动态) ==》控制模块显示隐藏
  v-for ==》循环渲染
  v-on v-on:click == @click ==》事件绑定
  v-bind 可以简写(:) :class、:src ==》属性绑定
  v-for="(item,index) in list" :key="index" :class={class名:index==定义变量}   //tab切换用的较多

  启动服务后自动运行浏览器 :config->index.js->autoOpenBrowser设置为true 启动服务自行打开页面 或者在 package.json "scripts": {"dev": "webpack-dev-server --open --inline --progress --config build/webpack.dev.conf.js",.....},添加--open


4.组件需要先在用的父级应用 import 自己起名字(尽量驼峰形式) from './xxx' 然后components里注册后才能使用 在template中使用驼峰形式转换分割线
(导入: import myFirstCom from '../compontents/index.vue' 注册: compontents{ myFirstCom } 引用 <my-first-com></my-first-com>)

监听list数组;
watch:{
  list:{ ==>监听的变量
    handler(list){
      Store.save(list);
     }
    }
}
list:Store.fetch() ==>调用

5.父子之间通信
  父传子 props 在父组件定义数据,子组件通过props接收
  父级 : :父组件发送自定义参数:要发送的数据 (:msg="father send info")
  子级: props['父组件发送自定义参数'] (props['msg'])
  子传父 $on() $emit()

  ##直接级父子关系
  父组件 @父组件自定义事件名:父组件里方法名() 例:(@tellChilderInfo="getChilderInfo")
  子this.$emit('父组件自定义事件名','向父组件传递的数据'); 例:(this.$emit('tellChilderInfo'))


  非父子 eventHub 就是创建一个事件中心,相当于中转站,可以用它来传递事件和接收事件
  在共有组件中,创建一个空的 Vue 实例作为事件中心 let Hub=new Vue()
  组件A: @触发事件='方法名' 在方法中通信 (@click='getInfo')
  methods:{
    getInfo(){
      Hub.$emit('自定义事件','要传递的数据')
    }
  }
  组件B: Hub.$on('自定义事件','接收传递的数据') //可以写在本组件方法里
  全局方法 main.js中给data添加一个 名字为Hub的空vue对象
  // 根组件(this.$root)
  new Vue({
    el: '#app',
    ..............
    render: h => h(App),
    data: {
      Hub: new Vue() ##空的实例放到根组件下,所有的子组件都能调用
    }
  })
  组件A :this.$root.Hub.$emit('自定义事件', 发送数据) //触发  例:==>this.$root.Hub.$emit('YOUR_EVENT_NAME', 123)
  组件B :this.$root.Hub.$on('自定义事件', (接收参数) => { //接收
    console.log(yourData)
    })
  beforeDestroy() { //结束后要销毁
    this.$root.Hub.$off('YOUR_EVENT_NAME')
  }

  ....未完待续!!!

猜你喜欢

转载自www.cnblogs.com/menghui-guan/p/9418495.html