vue---指令

  v-bind:href   //a标签里的链接

  v-on:click    //点击事件

</head>
<body>
    <div id="test">
        <button v-on:click="show()">d</button>
    </div>
    <script>
         new Vue({
             el:"#test",
             methods:{
                 show : function(e){
                     console.log(e);
                 }
             }
         });
    </script>
</body>

  如果是 v-on:click="show"  则能调用起事件对象,也就是这个e有效。

  但是v-on:click="show()" 这样调用,e就无效了,加括号后要想使形参e有效,则需按vue提供的,填入$event.

  v-on:click="show($event,a,b)"  ,$event表示事件对象,如果其他参数,可以接着传入。

  v-on:click.stop = "show"   .stop表示阻止时间冒泡。

  v-on:click.prevent    阻止默认事件

  

  <inoput type='text' v-model.number='value'>

  v-model.lazy  失去焦点后才更新值

  v-model.number  输入框输入后得到的是字符串,这个可以将其转为数字

  v-model.trim   去掉前后的空格

  v-html="html"   渲染html

  <div v-once>{{msg}}</div>   只渲染一次

 1 <body>
 2     <div id="app">
 3         <p v-if="num > 50">货源充足</p>
 4         <!-- 不符合条件的的p元素将被删除 -->
 5         <p v-else-if="num>0">库存警告</p> 
 6         <p v-else>库存不足</p>
 7         <input type="text" v-model="num">
 8     </div>
 9     <script>
10         new Vue({
11             el:'#app',
12             data : {
13                 num : 100
14             }
15         });
16     </script>
17 </body>

 

  v-if是将整个元素删除,v-hide是添加display:hidden 隐藏元素。

<body>
    <div id="app">
        <div v-cloak>
            {{num}}
        </div>
    </div>
    <script>
    setTimeout(function(){
        new Vue({
            el:'#app',
            data : {
                num : 100
            }
        });        
    },5000);
    </script>
</body>

  当{{num}}没被渲染前,它的父级div会有个v-cloak属性,知道被渲染成100,v-cloak属性就会消失。凭借这一点,可以写个style样式

  [v-cloak]{display:none;} 在为渲染前来隐藏{{num}},会美观一点。

 

<body>
    <div id="app">
        <div style="width:100px;height:100px;border:1px solid black;" v-bind:style="{background:color}"></div>
        <select v-model="color">
            <option value="#f00">红色</option>
            <option value="#0f0">绿色</option>
            <option value="#00f">蓝色</option>
            <option value="#666">灰色</option>
        </select>
    </div>

    <script>
         new Vue({
             el:'#app',
             data : {
               color:'#f00',
             }
         });
    </script>
</body>

  v-bind:style="{css样式}",里面的样式会和原有样式融合,别忘了加上大括号,这里面的css样式值可以使用表达式。

<body>
    <div id="app">
        <div style="width:100px;height:100px;border:1px solid black;" v-bind:style="[style1,style2]"></div>
        <select v-model="color">
            <option value="#f00">红色</option>
            <option value="#0f0">绿色</option>
            <option value="#00f">蓝色</option>
            <option value="#666">灰色</option>
        </select>
        <button v-on:click="change">change</button>
    </div>

    <script>
         new Vue({
             el:'#app',
             data : {
               color:'#f00',
             },
             computed : {
                 style1 : function(){
                     return {background:this.color};
                 },
                 style2 : function(){
                     return {borderRadius:'50%'};
                 }
             }
         });
    </script>
</body>

  将样式对象写在computed里面,这样,data里的值有什么变化,就能同步。有对个样式对象时,v-bind:style="[style1,style2]";注意是数组的形式。

  ps:css画三角形,把div的宽和高都设为0,然后border-left:100px solid transparent;  border-right:100px solid transparent; border-top:150 solid green; 这样一个倒三角形就画出来了。如果是正三角,把border-top改为border-down就行了。

    

    v-bind  简写为 : 一个冒号。  

  v-on    简写为 @

 

posted @ 2018-04-04 19:22  恰似  阅读(138)  评论(0编辑  收藏  举报