美文网首页Web前端之路让前端飞@IT·互联网
Vue.js学习笔记(二)--来自于慕课网的入门实战教程

Vue.js学习笔记(二)--来自于慕课网的入门实战教程

作者: 430e88caaec1 | 来源:发表于2017-05-30 17:50 被阅读132次

这是我第二次学习vue.js(第一次在我的第一篇这个系列的笔记里面有),因为还有几天就期末考试了,所以只能学这么点了

16、指令修改器

对v-on:keydown.enter=“func()”进行分析:

其中的v-on是指令,keydown是这个指令的参数,enter是指令修改器(意思是按下键盘上的enter键的时候触发函数),func()是触发的函数。

其中的enter是可以换成其他的指令修改器,例如数字13(v-on:keydown.13=“func()”)等等

如果我们把指令修改器给去掉(v-on:keydown=“func()”),此时,每当我们按下键盘上的任意键,都会去触发func()这个函数

17、自定义事件

我们在子组件a里面定义了一个自定义事件my-event,当my-event事件触发的时候,我们去执行onComaMyEvent函数

//这好似a.vue文件
<template>
    <div>
        <p>{{content}}</p>
        <button v-on:click="emitMyEvent">emit</button>
    </div>
</template>

<script type="text/javascript">
    export default{
        data: function(){
            return {
                content: 'I am a component'
            }
        },
        methods:{
            emitMyEvent(){
                this.$emit('my-event', this.content);//这里定义了一个my-event事件,其中this.content是传递给app组件里的onComaMyEvent函数的参数
            }
        }
    }
</script>

//这是app.vue文件
<template>
  <div>
      <ul>
        <li v-for="item in items">
          {{item.name}} {{item.price}}
        </li>
      </ul>
    <button v-on:click="addItem">按钮</button>
    <input type="text" name="text" v-on:keydown="onkeydown">
    <componentA v-on:my-event="onComaMyEvent"></componentA>
  </div>
</template>
<script>
import componentA from './components/a.vue' //引入这个a组件,组件名为from前面的名字componentA

export default{
  components:{componentA},//在引入之前,要先在当前的组件里先注册这个组件,这句话其实是ES6的缩写,他原来是{componentA:componentA}
  data: function(){
    return {
      hello: '<span style="color:red;">world</span>',
      num: 1,
      status: true,
      items: [
        {
          name: 'apple',
          price: 34
        },
        {
          name: 'banana',
          price: 50
        }
      ]
    }
  },
  methods: {//在方法里面可以调用组件里面的数据
    addItem(){
      this.items.push({
        name: 'orange',
        price: 39
      });
    },
    onkeydown: function(){
      console.log('on key down');
    },
    onComaMyEvent(param){
      console.log('on Coma MyEvent' + param);
    }
  }
}
</script>

18、

vue模板只能有一个根对象

例如以下是错误的写法:

<template>
    <el-button type="primary">{{test1}}</el-button>
    <button>点击我</button>
</template>

所以你想要出现正常的效果,你得用一个div来或是别的标签来包裹全部的元素:

<template>
    <div
        <el-button type="primary">{{test1}}</el-button>
        <button>点击我</button>
    </div>
</template>

19、

v-model指令:表单数据模型双向绑定

v-model指令是用来绑定input标签的value属性的,我们知道,input标签的value属性就是input里面输入的值。然后,我们再让它和data里面的属性关联起来,这时候,我们就可以让input里面的值在其他地方使用,并且实现同步更新

<template>
  <div>
      <ul>
        <li v-for="item in items">
          {{item.name}} {{item.price}}
        </li>
      </ul>
    <input type="text" name="text" v-model="myValue">
    <p>{{myValue}}</p>
  </div>
</template>
<script>
import componentA from './components/a.vue' //引入这个a组件,组件名为from前面的名字componentA

export default{
  components:{componentA},//在引入之前,要先在当前的组件里先注册这个组件,这句话其实是ES6的缩写,他原来是{componentA:componentA}
  data: function(){
    return {
      hello: '<span style="color:red;">world</span>',
      num: 1,
      status: true,
      items: [
        {
          name: 'apple',
          price: 34
        },
        {
          name: 'banana',
          price: 50
        }
      ],
      myValue: '',
    }
  },
  methods: {//在方法里面可以调用组件里面的数据
    addItem(){
      this.items.push({
        name: 'orange',
        price: 39
      });
    },
    onkeydown: function(){
      console.log('on key down');
    },
    onComaMyEvent(param){
      console.log('on Coma MyEvent' + param);
    }
  }
}
</script>

注意:我们必须先在data里面声明了myValue之后,才能写v-model="myValue",否则会报错

v-model指令也有它的修改器,例如:

v-model.lazy="myValue"

使用了lazy这个修改器之后,只有当我们在input输入了值并且按下enter键或者input失去了焦点之后,才会在我上面的p标签里面输出myValue的值

20、属性监听

意思就是我们去监听一个vue.js的变量,每当这个变量被改动的时候,我们就去执行特定的操作

通过watch这个选项来实现的

当下面的例子中的myValue被改变的时候,会执行:

myValue: function(val, old){
      this.newValue = val;
      this.oldValue = old;
    }

其中的val是传进去的myValue的新值,old是传进去的myValue的旧值

代码如下:

<template>
  <div>
      <input type="text" name="text" v-model="myValue">
      <p>新的值:{{newValue}}</p>
      <p>旧的值:{{oldValue}}</p>
  </div>
</template>
<script>
import componentA from './components/a.vue' //引入这个a组件,组件名为from前面的名字componentA

export default{
  components:{componentA},//在引入之前,要先在当前的组件里先注册这个组件,这句话其实是ES6的缩写,他原来是{componentA:componentA}
  data: function(){
    return {
      myValue: '',
      newValue: '',
      oldValue: ''
    }
  },
  methods: {//在方法里面可以调用组件里面的数据
    addItem(){
      this.items.push({
        name: 'orange',
        price: 39
      });
    },
  },
  watch:{
    myValue: function(val, old){
      this.newValue = val;
      this.oldValue = old;
    }
  }
}
</script>

以上笔记是我今天看视频看到的位置,后面还会继续更新(❁ᴗ͈ˬᴗ͈)

相关文章

网友评论

    本文标题:Vue.js学习笔记(二)--来自于慕课网的入门实战教程

    本文链接:https://www.haomeiwen.com/subject/whjrfxtx.html