vue provide和inject小实例

打印 上一主题 下一主题

主题 511|帖子 511|积分 1533

  1. import Vue from 'vue'
  2. const ChildComponent={
  3.     template:`chilid companet:{{data.value}}`,
  4.     inject:['yeye','data'],
  5.     mounted(){
  6.     }
  7. }
  8. const compoent={
  9.     name:'comp',
  10.     components: {
  11.         ChildComponent
  12.     },
  13.     template:` this is compoent {{text}}
  14.       <input type="text" v-model.number="text">
  15.       <child-component></child-component>
  16.     `,
  17.     props:{
  18.         active:{
  19.             validator(value){
  20.                 return typeof value === 'boolean'
  21.             }
  22.         }
  23.     },
  24.     data(){
  25.         return {
  26.             text:0
  27.         }
  28.     }
  29. }
  30. // Vue.component('CompOne',compoent)
  31. new Vue({
  32.     el:'#root',
  33.    /* provide:{//直接赋值是不能传递的,因为这个this对象还没有创建,跨阶层调用
  34.         yeye:this,
  35.         value:this.value
  36.     },*/
  37.     provide(){//所以要用方法的形式进行赋值,默认没有reactive的属性,
  38.         const data={}
  39.         Object.defineProperty(data,'value',{
  40.             get:()=>this.value,//返回的是这里的value的实例的值
  41.             enumerable:true
  42.         })
  43.        return {
  44.            yeye:this,
  45.            data
  46.         }
  47.     },
  48.     components:{
  49.         CompOne:compoent
  50.     },
  51.     data(){
  52.         return {
  53.            value:123
  54.         }
  55.     },
  56.     template:`
  57.         
  58.             <comp-one></comp-one>
  59.           <input type="text" v-model="value">
  60.             
  61.     `,
  62. })
复制代码
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

张国伟

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表