VUE 指令集

什么是VUE

Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。

声明式渲染

Vue.js 的核心是一个允许采用简洁的模板语法来声明式地将数据渲染进 DOM 的系统:

<div id="app">
  {{ message }}
</div>
<script>
var app = new Vue({
  el: '#app', // 绑定一个标签,标签内可使用该对象内的数据
  data: {
    message: 'Hello Vue!'
  }
})
// Vue对象可以直接调用他属性对应的对象的属性
console.log(app.message) //  'Hello Vue!'
// 想要查看他的对象需要在属性名前+$
console.log(app.$el) // div标签
</script>

将data内容作为标签属性

<div id="app-2">
  <span v-bind:class="message">
<!--v-bind指令。指令带有前缀 v-.--> <!--使渲染出来的class带有active的值--> 一个标签 </span> </div> <script type="text/javascript" src="vue.js"></script> <script> var app2 = new Vue({ el: '#app-2', data: { message: "active" } }) </script>

v-bind不仅可以直接将参数替换进去,还可以根据参数来判断,activ可以根据参数来动态的渲染

<div id="app-2">
  <span class="btn" v-bind:class="{activ:message}">
      <!--message为true会将activ添加进class中-->
    一个标签
  </span>
</div>
<script type="text/javascript" src="vue.js"></script>
<script>

var app2 = new Vue({
  el: '#app-2',
  data: {
    message: true
  }
})
</script>

另外"v-bind:"可以简写为":"

标签属性的数组语法

<div id="app-5">
    <div v-bind:class="[activeClass, errorClass]"></div>
</div>

<script type="text/javascript" src="vue.js"></script>
<script>

var app5 = new Vue({
  el: '#app-5',
  data: {
  activeClass: 'active',
  errorClass: 'text-danger'
}
})
</script>

事件的绑定

<div id="app-5">
  <p>{{ message }}</p>
  <button v-on:click="reverseMessage">逆转消息</button>
    <!--v-on:用于绑定事件,:后面是事件.=后面是执行的函数,如果函数没有参数可以不写括号-->
</div>

<script type="text/javascript" src="vue.js"></script>
<script>

var app5 = new Vue({
  el: '#app-5',
  data: {
    message: 'Hello Vue.js!'
  },
  methods: { // 函数存在与methods属性中
    reverseMessage: function () {
      this.message = this.message.split('').reverse().join('')
    }
  }
})
</script>

 另外"v-on:"可以简写为"@",函数中的this并不是指函数所在的对象,而是Vue对象,

这里可以看出VUE的优点,我们无需操作 DOM——所有的 DOM 操作都由 Vue 来处理,你编写的代码只需要关注逻辑层面即可

判断

<div id="app">
    <div class="box" v-if="isShow">我的第一</div>
    <h1 class="box"  v-else>没有第一个盒子</h1>
    <!-- 渲染时v-if或v-else条件为false是不会出现在DOM中,
    而v-show条件为false是添加了display=none -->
    <div class="box2" v-show="show">我的第二</div>
</div>

<script type="text/javascript" src="vue.js"></script>
<script>

var app = new Vue({
  el: '#app',
  data:{
            isShow:true,
            show:false,
        }
})
</script>

循环

<div id="app">
<ul>
        <li v-for="(item,index) in lists">{{item}}</li>
    <!-- 第一个参数是lists中的值,第二个是索引,只写一个参数是值 -->
</ul>
</div>
<script type="text/javascript" src="vue.js"></script>
<script>

var app = new Vue({
  el: '#app',
  data:{
      lists:["红烧肉","红烧茄子","红烧鱼","江小白"]
        }
})
</script>

阻止默认事件

<div id="app">
<a href="javascript:;">click</a>  <!--阻止a标签的默认行为-->
    <a href="#" @click="anchorHandler($event)">a1</a>
    <!-- $event是事件本身 -->
    <a href="#" @click.prevent="">a2</a>
</div>
<script type="text/javascript" src="vue.js"></script>
<script>

var app = new Vue({
  el: '#app',
  data:{
      lists:["红烧肉","红烧茄子","红烧鱼","江小白"]
        },
    methods:{
            anchorHandler(e){
                e.preventDefault()  // 阻止标签的默认行为
            }

        }
})
</script>

表单输入绑定

<div id="form">
    <form action="" @submit.prevent>
        <!-- @submit.prevent阻止提交事件 -->
        <!-- message的值会根据输入框中的内容动态改变 -->
        <input v-model="message" placeholder="edit me">
        <div>{{message}}</div>
    </form>
</div>

<script src="vue.js"></script>
<script>
    var form = new Vue({
        el:"#form",
        data:{
            message:'luffy',
        }
    })

</script>

计算属性

<div id="example">
  <p>Original message: "{{ reversedMessage }}"</p>
    <span @click="{{reversedMessage=222}}">点击就送</span>
</div>
<script type="text/javascript" src="vue.js"></script>
<script>

var vm = new Vue({
  el: '#example',
  data: {
    message: 'Hello'
  },
  computed: { // 计算属性存于computed中

    reversedMessage:{
        // 计算属性默认只有getter方法
      get:function () {
          return this.message
      },
      set:function (newval) {
          this.message = newval;
      }
    }
  }
})
</script>

原始HTML

# 将rawHtml的标签字符串替换成标签
<span v-html="rawHtml"></span>

  

posted @ 2018-04-02 21:56  瓜田月夜  阅读(205)  评论(0)    收藏  举报