Vue学习笔记

View  --->      html标签      |        Model       --->       data数据

一.v-for

1.数组: (两种:数据数组,对象数组)           可选参数索引index

    1.arr:['apple','banana','pear']

                  <li v-for="(item,index) in arr">{{ item+index }}li>

     2.arrObj:[ {name:'hanna'},{name:'lsb'},{name:'bobo'} ]

          <li v-for="(item,index) in arrObj">{{ item.name+index }}li>

          push();   pop();  shift();   unshift();   splice();   sort();  reverse()

          pop() 方法用于删除数组的最后一个元素并返回删除的元素。

          shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。

          unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。

          splice() 方法用于插入、删除或替换数组的元素。(改变原始数组

 2.对象:                             可选参数键名 key, 索引 index

      obj:{ name:'haha', age:21, sex:'woman'}

      <li v-for="(item,key,index) in obj">{{ item+"-"+ key+"-"+index }}li>


二.v-show  /  v-if :

布尔值


三.事件

1.事件对象:

中$ event 是事件对象

使用事件对象show(e) { alert(e.clientX)     }

2.事件冒泡:

<div id="box" @click="alertion2">

<button @click="alertion1">冒泡button>

 点击内部按钮,触发alertion1后,再触发alertion2

3.阻止事件冒泡:

1).事件对象(e.cancelBubble=true)

<div id="box" @click="alertion2">

<button @click="alertion1($event)">冒泡button>

 alertion1(e)    {       alert("内部");    e.cancelBubble=true;      }

 2). vue自带的.stop(推荐!)

<div id="box" @click="alertion2">

<button @click.stop="alertion1">冒泡button>

4.事件默认行为:

1). 事件对象  ( e.preventDefault( ); )

                       <button @contextmenu="pre($event)">阻止默认行为button>

                       pre(e)   {    alert(11);    e.preventDefault();}

2). Vue自带的.prevent(推荐!)

       <button @contextmenu.prevent="pre1">prevent阻止默认行为button>

5. 键盘事件:

1). 事件对象  ( e.preventDefault( );  )

               <input type="text" @keydown="enter($event)">

               enter(e) { if (e.keyCode == 13){ alert("您按下回车键了");}}

2). Vue自带的(推荐!)

       (.enter/.13、up、down、left、right)

               <input type="text" @keydown.13="enter">       或者

               <input type="text" @keydown.enter="enter">


四.属性

1. 属性绑定:v-bind( 简写成 :)

           效果与v-bind同,但会报404错(url是数据)

           ( url是data中的数据) ! ! * * * 推荐使用 

2. class和style

         1). class:

                 数组    : class=”[red,a,b,d]”   值为data中的数据red: ’red’类

                 对象    : class=”{ red:true, blue:false }”         值为布尔类型

                              : class=”json”        json:  { red:true, blue:false }

                              :disabled=isDisabled.      // isDisabled是布尔值

        2).  style:

               注意:复合样式,采用驼峰命名法

               数组:style=”[ a,b,d]”值为data中的数据     a: {color: ’red’}

               对象:style=”{color:‘#fff’,backgroundColor:’purple’}”

               :style=”ajson”    ajson:{ color:’#fff’,background:’#000’ }


五.模板

1. {{ msg}}  双向绑定:数据更新,模板会跟着更新

   如果数据展示后,不需要更新,数据只绑定一次:

   {{msg}} 

2. v-html  转义模板


六.过滤器    (过滤模板数据)

 1.系统自带的过滤器,例如转化大写:{{ ‘welcome’| uppercase }}等 ,全都被2.0废除了,过滤器需要自定义

         eg:????????????????????????????

  2.       自定义过滤器:

            Vue.filter(name,function(input){      

              });

                  如果带参数*{{date | formatDate('YY-MM-DD', timeZone)}}

            eg:单位数字变成双位数字:

            {{a |toDouble}}

            window.onload=function(){

                        Vue.filter('toDouble', function(input){

                               returninput<10?'0'+input:input;

                        })

                        newVue({

                               el:'#box',

                               data:{

                                      a:9

                               }

                        });

                 }

• 时间戳一般说成XXX的时间戳,是指XXX发生或者处理的时间,这个时间被记下来,存在某处备查。

3.    时间转换器:

4.  过滤html标记:

5. 双向过滤器:

Vue.filter('filterHtml',{

          read:function(input){ //model-view

              return input.replace(/<[ ^< ]+>/g,'');

                  },

      write:function(val){ //view -> model

                  return val;

                  }

    });


七.交互(ajax)

  1.引入vue-resource库, 相当于给new  Vue添加了一个方法或对象

       • vue-resource是交互(ajax)的前提

  2.谷歌跨域:访问本地文件(非服务器文件),Chrome会产生跨域问题

       跨域:(面试)

       https://segmentfault.com/a/1190000011145364

        协议,域名,端口,但凡有一个改了,就是跨域

  3.解决跨域问题: http://blog.csdn.net/sjohnny/article/details/70256172

         1) chrome `右键`->`属性`->`快捷方式`处添加`--allow-file-access-from-files`

               操作如下图:         http://blog.csdn.net/sjohnny/article/details/70256172


         2) 将本地文件转换成服务端的文件(解决访问本地文件跨域的问题)

 sublime配置一个sublimeServer插件来使用


        配饰sublimeServer来实现将本地.html文件以服务的形式打开

         https://www.wenji8.com/p/353U26z.html


         3)使用火狐浏览器

-------------------------------------------------------------------------------------------------------

4. 交互get :(默认)   

     获取一个普通文本数据:                    

                 this.$http.get(‘a.txt’).then(function (res) {

                          alert(res.status);

                          alert(res.data);

                  },function () {

                      alert(res.status);

                   });

         给本地服务器发送数据:(* )-------à 跨服务器会产生跨域问题

        this.$http.get('get.php',{

              a:1,

              b:2

             }).then(function(res){

                  alert(res.status);

            },function(){

        })

-------------------------------------------------------------------------------------------------------

  5.  交互post :

给本地服务器发送数据 :( * ) -------à 跨服务器会产生跨域问题

this.$http.post('post.php',{

              a:1,

              b:2

   },{

              emulateJSON:true

 }).then(function(res){

              alert(res.status);

              alert(res.data);

  },function(){

               alert(res.status);

  })

-------------------------------------------------------------------------------------------------------

  5.  交互jsonp :

给本地服务器之外服务器发送数据 :( * )----->             不会跨域

eg1: (

360网站)

https://sug.so.360.cn/suggest?callback=suggest_so&encodein=utf-8&encodeout=utf-8&format=json&fields=word&word=a                   

搜索a后,在network->js中拷贝link

address,结果如下:

https://sug.so.360.cn/suggest?callback=suggest_so&word=a    接口

https://sug.so.360.cn/suggest                                                      地址

word=a                                                                                         数据

操作代码:

this.$http.jsonp('https://sug.so.360.cn/suggest',{

    word:

'a'                                         数据}).then(function(res){

// alert(res.status);

    alert(res.data.s);

},

function(res){

    alert(res.status);

})

eg1: ( 百度)

https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=a&json=1&p=3&sid=25263_1439_24866_21126_17001_20240_25177_25145_20929&req=2&csor=1&cb=jQuery110204777080402977609_1512525981208&_=1512525981212

https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=a&cb=jshow

https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su        地址

wd=a                                                                                                  数据

cb    --->    callback       需要设置属性

操作代码:

this.$http.jsonp('https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su',{

wd:'a'

},{

 jsonp:'cb'        // 重点:cbcallback的名字}).then(function(res){

alert(res.status);

alert(res.data.s);

},

function(res){

alert(res.status);

})

-------------------------------------------------------------------------------------------------------

6.  交互综合使用:(默认是get)

 this.$http({

                     url:     // 后台接口的地址

data: {          //给后台提交数据

                                   //根据后台接口文件发送数据

                                   act:‘add’,

                                   content:this.XX

}

                     methods:post / get / jsonp

                     jsonp:  ’cb’   //cbName

}).then(function(res){

       //返回成功后的json格式文件

       var json=res.data;

if(  ){

}

});

八.生存周期

1.  钩子函数:

       a).  created                à       实例对象成功,new Vue创建以后执行

       编译的两个阶段:

       b).  beforeCompile             à    编译之前

       c).  compiled          à      编译之后

       d).  ready               à          数据插入到文档中   √

       e).  beforeDestroy        à      销毁之前

       f).  destroyed           à      销毁之后



v-cloak  (一般用于一大段)

防止花括号中的数据闪烁,在样式表中设置 [v-cloak]

{ display: none }

九、计算属性    

computed:{

       b:function(){             //默认调用get

       return   值

}

}

• 必须有return值

• 默认是getter方法,即—> 默认只能获取计算属性的值,如果想为计算属性直接赋值,则会报错。


十、VUE实例化用法

var vm=new Vue({})

• vm.$el      à         获取了元素或节点(例如divElement)

              eg:            vm.$el.style.background='red';

• vm.$data     à        获取了数据对象(就是data)

[if !supportLists]•      [endif]Vm.$mount(‘#box’);                                    à          手动挂载

new Vue({   }).$mount(‘#box’);         à         手动挂载

[if !supportLists]•      [endif]在new Vue({ aa:11 }) 中自定义的属性相当于静态属性   à   自定义属性,

若想访问自定义的属性,  vm.$options.aa

(model层中的属性,即在data数据中自定义的)

[if !supportLists]•      [endif]在new  Vue({ show:function(){alert(); } })中自定义方法  à 自定义方法,

调用方法:vm.$options.show();

[if !supportLists]•      [endif]vm.$log()                à                 打印现在data中的数据状态

十一、关于循环

v-for=”value  in  data”      

循环如果有重复数据,vue1.0是不行的,需要加track-by

vue2.0可以有

十二、自定义指令

                          属性:(View层中的属性,即在html标签中自定义的)

                          Vue.directive(指令名称,function(参数){

                            this.el   ->原生DOM元素

                          });




                          指令名称:    v-red  -> red

                          *注意: 必须以 v-开头


                          拖拽:

                          -------------------------------

十三、自定义元素指令:(用处不大)

                          Vue.elementDirective('zns-red',{

                              bind:function(){

                                  this.el.style.background='red';

                              }

                          });

------------------------------------------------

@keydown.up

@keydown.enter


@keydown.a/b/c....


十四、自定义键盘信息:

                          Vue.directive('on').keyCodes.ctrl=17;

                          Vue.directive('on').keyCodes.myenter=13;

------------------------------------------------

十五、监听数据变化:

                          vm.$el/$mount/$options/....


                          vm.$watch(name,fnCb);  //浅度

                          vm.$watch(name,fnCb,{deep:true});  //深度监视

------------------------------------------------

vue组件:

组件间各种通信

slot

vue-loader      webpack   .vue

vue-router

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

推荐阅读更多精彩内容

  • 基本格式 以json的形式、将数据(支持所有格式)挂载在vue的data上、方法挂载在vue的methods上。 ...
    kirito_song阅读 766评论 0 21
  • vue学习笔记 安装 Vue 提供一个官方命令行工具,可用于快速搭建大型单页应用。只需几分钟即可创建并启动一个带热...
    EL_PSY_CONGROO阅读 1,059评论 0 5
  • Vue学习笔记 Vue初始化对象 data和methods里面的属性都是Vue这个实例对象的代理属性,例:vm.m...
    土豪码农阅读 999评论 1 1
  • 项目脚手架 在这里我使用vue-cli来进行安装 查看项目结构,index.html/main.js是项目入口,A...
    等酒香醇V阅读 716评论 0 1
  • 人生在世,谁的一生也不会十全十美,生活不如意的事十有八九。无论几何,但愿我们都能想开,看淡,放下一生不愉快的人和事...
    安宁康泰阅读 510评论 2 0