vue 学习 渲染、v-指令

vue渲染

在组件中data是一个方法里面的值要是一个对象return出去

export default {
  name: "HelloWorld",
  data() {
    return {
      msg: "vue 学习旅程"
    };
  }
};

如果是new的事例 data就是一个对象

var app = new Vue({
  el: '#app',
  data: {
    message: 'Hello Vue!'
  }
})

组件例子:   

1.使用  {{}}  文本插值符

f1 <template>
 2   <div class="hello">
 3     <div>{{msg}}</div>
 4   </div>
 5 </template>
 6 
 7 <script>
 8 export default {
 9   name: "HelloWorld",
10   data() {
11     return {
12       msg: "vue 学习旅程"
13     };
14   }
15 };
16 </script>

效果:
// v-text v-html 区别
<template>
  <div class="hello">
    <span v-text="word1">11</span>
    <span v-html="word2">11</span>
  </div>
</template>

<script>
export default {
  name: "HelloWorld",
  data() {
    return {
      word1: " <div>安稳1</div> ",
      word2: "<div>安稳2</div>  "
    };
  }
};
</script>

效果:
总结: v-html解析html 两个都会覆盖标签内容 {{}}不会覆盖 {{}}和v-text都不解析html内容

 

vue指令

2.v-bind 

改指令的意思是:“将这个元素节点的 title 特性和 Vue 实例的 message 属性保持一致”。 v-bind可以简写 : 

<template>
  <div class="hello">
    <span v-bind:title="msg">鼠标悬停几秒钟查看此处动态绑定的提示信息!</span>
  </div>
</template>

<script>
export default {
  name: "HelloWorld",
  data() {
    return {
      msg: "vue 学习旅程"
    };
  }
};
</script>

鼠标悬浮效果:

 

 3.v-if 指令

绑定一个布尔值   true是显示  false隐藏

<template>
  <div class="hello">
    <span v-if="active">{{msg}}</span>
  </div>
</template>

<script>
export default {
  name: "HelloWorld",
  data() {
    return {
      msg: "vue 学习旅程",
      active: true
    };
  }
};
</script>

 

 4.v-for

注意点:

1.需要加key值 -通过key值来提升渲染的效率默认用 “就地复用” 策略

2.v-for  

 v-for="(item,index) in items"     第一参数item是每一项的数组元素  第二参数index是当前项的索引    (和angularjs 相反 )
也可以用of代替in作为分隔符,也是最接近javascript迭代器的语法。 这时候每一项的意义有一些不一样
 v-for="(item,key,index) of items"  第一参数item元素 第二参数key为键名 第三个参数index 为索引
<template>
  <div class="hello">
   <span v-for="(item,index) in msg" :key="index">{{item.a}}</span>
  // <span v-for="item in msg">{{item.a}}</span> 注意这种写法不会影响效果,但是编辑器语法会报错出现红色波浪线 记得加上key值
 </div>
</template>
 <script>
export default {
  name: "HelloWorld",
  data() {
    return {
      msg: [{ a: 1 }, { a: 2 }, { a: 3 }]
    };
  }
};
</script>

效果:

 5.v-on

事件绑定可以cy()也可以cy直接绑定   加括号传参数 v-on可以简写@

<div id="app-5">
  <p>{{ message }}</p>
  <button v-on:click="reverseMessage">逆转消息</button>
</div>
var app5 = new Vue({
  el: '#app-5',
  data: {
    message: 'Hello Vue.js!'
  },
  methods: {
    reverseMessage: function () {
      this.message = this.message.split('').reverse().join('')
    }
  }
})

以上我们直接写死的点击事件 也可以使用动态参数作为事件名绑定处理函数
<div id="app-5">
  <button v-on:[eventname]="reverseMessage">动态事件名</button>
</div>
var app5 = new Vue({
  el: '#app-5',
  data: {
  eventname:'focus'
  },
  methods: {
    reverseMessage: function () {
    。。。。。。  
   } } })
当 值为'focus' v-on:[enentname]等价 v-on:focus

包括(v-bind 和 v-on 的动态参数 )
动态事件参数注意点:
1.非字符串类型都会触发警告
2.语法约束空格引号无效并且回避大小写
3.计算属性复杂的表达式也会无效
例:
<a v-bind:['foo' + bar]="value"> ... </a> //触发警告
<a v-bind:[someAttr]="value"> ... </a>  //流浪器特效强制转小写

 这个是官网的事例:我看到了一个reverse()的方法 以前没用过所以做一下记录~

var vm = new Vue({
date:{
     message="abcdefg"
    }
)}
//split(' ')分裂,也就是把一个数据拆分    message.split(
' ') == [ "a", "b", "c", "d", "e", "f", "g"]
//reverse( )翻转,把数据反过来 !只对数组有效
message.split(' ').reverse() == ['g', "f", "e".......]
//join(' ')重组,把数组合成一个字符串
//把数据反过来重组
message.split(' ').reverse( ).join(' ')

 

 6.v-model  

<template>
  <div class="hello">
    <input type="text" v-model="msg" />
    <p>{{msg}}</p>
  </div>
</template>

<script>
export default {
  name: "HelloWorld",
  data() {
    return {
      msg: "vue 双向绑定"
    };
  }
};
</script>

 

 v-model的修饰符,一起记录一下

 (1) .lazy 会转变为在 change 事件中同步 , 也就是在失去焦点 或者 按下回车键时才更新**

  <input type="text" v-model.lazy="msg" />
 
 (2) .trim  去头尾空格
  <input type="text" v-model.trim="msg" />
 
 (3).number 将输入的值转化为Number类型 ,否则虽然你输入的是数字 但它的类型其实是String,在数字输入框中比较有用
  <input type="number" v-model.number="msg" />
  

 

posted @ 2019-07-04 14:44  啾啾啾啾一口  阅读(683)  评论(0编辑  收藏  举报