vue 的全局API

vue 的全局API:在构造器外部用vue提供给我们的API函数来定义新的功能


vue2.0_Vue.directive自定义指令 

自定义的指令:

Vue.directive('');自定义指令中传递的3个参数:

el:指令所绑定的元素,可以用来直接操作DOM。

binding:一个对象,包含指令的很多信息。

vnode:Vue编译生成的虚拟节点

Vue.directive('dmeo',function(el,binding,vnode){  

          el.style='color:'+binding.value;   

     });      

  var app=new Vue({     

       el:'#app',         

   data:{            

    num:10,            

    color:'green'    

       },

自定义指令的生命周期:bind 只调用一次,指令第一次绑定到元素时调用,用这个钩子函数可以定义一个绑定时执行一次的初始化动作inserted 被绑定元素插入父节点时调用update 被绑定于元素所在的模板更新时调用,而无论绑定值是否变化。通过比较更新前后的绑定值,可以忽略不必要的模板更新componentUpdated:被绑定元素所在模板完成一次更新周期时调用。unbind:只调用一次,指令与元素解绑时调用解绑:

在#app的作用域外面声明自定义指令,在外面进行解绑

解绑

function unbind(){       

     app.$destroy();     

   }

bind:function(){

//被绑定  

  console.log('1 - bind');

},

inserted:function(){

//绑定到节点    

  console.log('2 - inserted');},

update:function(){

//组件更新      

console.log('3 - update');

},

componentUpdated:function(){

//组件更新完成      

console.log('4 - componentUpdated');

},

unbind:function(){

//解绑     

 console.log('1 - bind');    

   vue2.0_Vue.extend扩展实例构造器

在构造器外面,构造一个模板$mount()手动挂载

Vue.extend

var authorExtend = Vue.extend({           

 template:"{{authorName}}",           

 data:function(){       

         return{                

    authorName:'JSPang',               

     authorUrl:'http://jspang.com'        

        }       

     }    

    });         

 console.log(new authorExtend());   

   new authorExtend().$mount('author');

vue2.0_Vue.set全局操作引用构造器外部数据

//在构造器外部声明数据

var outDate={count:1,goodName:'car'};

var app = new Vue({el:'#app'//引用外部数据data:outDate})

在外部改变数据的三种方法:

操作外部数据

1.用Vue.set改变function add(){vue.set(outData,'count',4);}

2.用Vue对象的方法添加:

app.count++;

3.直接操作外部数据outData.count++;

为什么要有Vue.set的存在?由于JavaScript的限制,Vue不能自动检测以下变动的数组当你利用索引直接设置一个项时,vue不会为我们自动更新。当你修改数组的长度时,vue不会为我们自动更新这时我们的界面是不会自动更新数组的,我们需要用Vue.set(app.arr,1,'ddd') 来设置改变,vue才会给我们自动更新,这就是Vue.set存在的意义。

vue2.0_生命周期(钩子函数)

Vue一共有10个生命周期函数,我们可以利用这些函数在vue的每个阶段都进行操作数据或者改变内容。

vue2.0_Template模板制作模板

1、在构造器里面直接建模版template:`我是选项模板`

2.在标签里面建模版

3.使用script标签写模板,可以外部引入

var app = new Vue({

el:'#app',

data:{

message:"hello Vue!"

},

template:'#demo3'

})

vue2.0_component_1Component 组件自定义组件

html里面不存在的标签全局的定义组件:

Vue.component('jspang',{

template:`我是全局的jspang组件

`})

注意:我们在js里注册一个组件,在html中调用它,这就是一个简单的一个组件的编写方法,并且它可以放到多个构造器的作用域里面局部的定义组件:

在构造器里面定义

var app = new Vue({

el:'#app',

components:{"panda":{template:'局部注册的panda标签'}

}

})

注意:在构造器里的components是加s的,而全局注册是不加s的组件和指令有什么区别:组件注册的是一个标签,而指令注册的是已有标签里的一个属性,在实际开发中我们还是用组件比较多,指令用的比较少,因为指令看起来封装的没那么好

vue2.0_component_2 定义属性并获取属性值

1.定义属性我们需要用到props选项,加上数组形式的属性名称

var app = new Vue({

el:'#app',

compoents:{'

panda':{template:`panda from {{here}}`,props:['here']}

}

})

2.属性中带'-' 的处理方式:使用小驼峰值进行换掉

3.在构造器里向组件中传值v-bind:xxxx

例子:

var app = new Vue({

el:'#app',

data:{  message:'sichun'},

components:{"panda":{template:`panda from{{here}}`

//这里面的props后面跟的是数组

props:['here']

}

}

})

vue2.0_component_3Component 父子组件关系

1、构造器外部写局部注册组件

var pandaComponent= {template:`Panda from china!`}

//构造器

var app = new Vue({

el:'#app',

components:{'panda':pandaComponent}

})

2.父子组件的嵌套var city= {template:`Panda from sichun!`}

var pandaComponent= {template:`Panda from china!`

//直接在声明里面嵌套一个子组件

components:{'city':city}}

//构造器

var app = new Vue({el:'#app',components:{'panda':pandaComponent}

})

vue2.0_component_4

var componentA={        

    template:`I'm componentA`        }  

      var componentB={            template:`I'm componentB`       }      

  var componentC={            template:`I'm componentC`        }     

         var app=new Vue({          

  el:'#app',      

      data:{             

   who:'componentA'       

     },         

components:{              

  "componentA":componentA,            

    "componentB":componentB,            

    "componentC":componentC,         

   },         

   methods:{              

  changeComponent:function(){              

      if(this.who=='componentA'){                

        this.who='componentB';             

       }else if(this.who=='componentB'){             

           this.who='componentC';           

         }else{                   

     this.who='componentA';                

    }           

     }          

  }  

      })

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,830评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,992评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,875评论 0 331
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,837评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,734评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,091评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,550评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,217评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,368评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,298评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,350评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,027评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,623评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,706评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,940评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,349评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,936评论 2 341

推荐阅读更多精彩内容