码迷,mamicode.com
首页 > 其他好文 > 详细

vue基础整理1-指令&模板

时间:2017-06-02 14:56:32      阅读:315      评论:0      收藏:0      [点我收藏+]

标签:ons   使用   return   turn   html   表达   v-on   基于   挂载   

vue核心:响应式的数据绑定、组合的视图组件

 

指令:

一种特殊的自定义行间属性。当其表达式的值改变时相应地将某些行为应用到dom上,如绑定事件处理函数。

v-model  实现双向数据绑定  eg.首先显示屏上的内容会反应在输入框中,当输入框中输入其他内容可以改变显示屏上的内容

 <div id="demo">                                     <!--模板-->
       <input type="text" v-model="message" />       <!--v-model实现双向数据绑定-->
       <p>{{message}}</p>                            <!--数据渲染-->
   </div>
   <script>
       let data={
           message:"hello vue"                       //这里的数据用于呈现在页面中的数据
       }
       var vm=new Vue({                             //vm实例,通过vue声明一个参数,该参数为一个对象
          el:"#demo",                               //html的挂载元素,里面直接写上选择器即可,一般用id,也可以用class的类名
           data:data                               //上面定义的数据.data是一个对象,将数据绑定在模板里
       });
  </script>

 

v-on 实现事件绑定  eg.为<span>标签绑定点击事件,在下面的vm实例的methods中定义需要绑定的事件

//es6 
<!--模板--> <div id="demo"> <span v-on:click="clickHandle()">{{message}}</span> <!--v-on指令可以实现绑定事件--> </div> <script> let obj={ message:"hello", //这里的数据是用于呈现在页面中的数据 } var vm=new Vue({ //vue实例,通过vue声明一个参数,该参数为一个对象 el:"#demo", //html的挂载元素,里面直接写上选择器即可 data:obj, //将上面定义的数据绑定在模板中 methods:{ clickHandle(){ //用于绑定的事件统一写在实例的methods中 alert("clicked"); } } }); </script>


//es5
 <div id="demo">
<span v-on:click="clickHandle()">{{message}}</span>
</div>
<script>
var obj={
message:"hello"
}
new Vue({
el:"#demo",
data:obj,
methods:{
clickHandle:function(){
alert("clicked");
}
}
});
</script>

 

v-bind  动态的绑定数据,简写为 :

<div id="demo" v-bind:custom="abc">                <!--可以通过v-bind绑定自定义属性-->
    <div v-html="html"></div>                      <!--v-html指令将文本解析成html-->
</div>
<script>
    let obj={         //数据
        html:"<div>hello,miaov</div>",
        abc:1
    }
    var vm=new Vue({
        el:"#demo",
        data:obj
    })
</script>

  

v-text  更新数据,会覆盖已有结构

 

v-show 根据值的真假,切换元素的display属性

 

v-else-if 多条件判断,为真则渲染

 

v-for 基于源数据多次渲染元素或模板块

 

v-pre 跳过元素和子元素的编译过程

 

v-html 可以解析数据中的html结构

<div id="demo">
    <span v-html="html"></span>      <!--渲染后显示在页面中为:hello-->
</div>
<script>
   
    let obj={     //数据
        html:"<div>hello</div>"
    }
    var vm=new Vue({
        el:"#demo",
        data:obj
    })
</script>

 

v-if 根据值的真假,切换元素会被销毁,重建

 

v-else 条件都不符合渲染

 

v-once 只渲染一次,随后数据更新不重新渲染

 

 

 

渲染:

声明式渲染-只需要声明在哪里做什么,而无须关心如何实现  &   命令式渲染-需要以具体的代码表达在哪里做什么,怎么实现

 var arr=[1,2,3,4,5] //求数组中每一项的倍数,然后放入另一个数组中

  /* //命令式地渲染
    var newArr=[];
    for(var i=0;i<arr.length;i++){
        newArr.push(arr[i]*2);
    }
    */

    //声明式渲染
    var newArr=arr.map(function(item){
        return item*2 ;
    });
console.log(newArr);

 

模版

html模板:基于dom的模板,模板都是可解析的有效的html

插值:

文本--使用双大括号{{value}}  替换实例上的属性值,当值改变时,插值内容处会自动更新

 

原生的html--双大括号输出的是文本,不会解析html

<div id="demo">
    <span>{{html}}</span>      <!--渲染后显示在页面中为:<div>hello</div>-->
</div>
<script>   
    let obj={   //数据
        html:"<div>hello</div>"
    }
    var vm=new Vue({
        el:"#demo",
        data:obj
    })
</script>

!-如果想将文本解析为html,输出hello,需要使用v-html <div id="demo"> <span v-html="html"></span> <!--渲染后显示在页面中为:hello--> </div> <script> //数据 let obj={ html:"<div>hello</div>" } var vm=new Vue({ el:"#demo", data:obj }) </script>

 

属性-使用v-bind进行绑定,可以响应变化

<div id="demo" v-bind:custom="abc"><!--可以通过v-bind绑定自定义属性-->
    <div v-html="html"></div><!--//v-html指令将文本解析成html-->
</div>
<script>
    let obj={         //数据
        html:"<div>hello,miaov</div>",
        abc:1
    }
    var vm=new Vue({
        el:"#demo",
        data:obj
    })
</script>

javascript表达式-

<div id="demo">
    {{3+6}}
    {{true ? "yes" : "no"}}
</div>
<script>
    var vm=new Vue({
        el:"#demo",
    });
</script>

 

字符串模板-template字符串,template选项对象的属性,模板将会替换挂载的元素。挂载元素的内容都将被忽略。(模板和template不能共存)

<div id="demo">
    <span>miaov ketang</span>
</div>
<script>
    let obj={
        html:"<div>hello,miaov</div>",
        abc:1
    };
    var str="<div>hello,{{abc}}</div>"       
//根节点只能有一个,即不能有并列的元素标签,但可以有包含的元素标签
    var vm=new Vue({
        el:"#demo",
        data:obj,
        template:str   /*将新渲染的str替换掉前面的整个div*/
    })
</script>

 

render模板-

<div id="demo"></div>
 <script>
     let obj={
         html:"<div>hello</div>",
         abc:1
     }
     var vm=new Vue({
         el:"#demo",
         data:obj,
         render:function(createElement){
             return createElement(
                     "ul",
                     [
                             createElement("li",1),
                             createElement("li",2),
                             createElement("li",3)
                     ]
             );
         }
     });
 </script>

  

 未完待续。。。。

vue基础整理1-指令&模板

标签:ons   使用   return   turn   html   表达   v-on   基于   挂载   

原文地址:http://www.cnblogs.com/haimengqingyuan/p/6927900.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!