vue 构建单页应用3

2018-06-08  本文已影响13人  那就远走

事件调用方法时传递参数

# template
<!-- methods 传递参数的两种方法 -->
<button v-on:click="showParam1('我是参数1')">点我显示参数1</button>
<button data-param="我是参数2" @click="showParam2($event)">点我显示参数2</button>

# script
...
methods: {
    // 直接传参
    showParam1(str) {
        alert(str);
    },
    // 传递过来一个 事件对象 通过该对象获取参数
    showParam2(e) {
        console.log(e.srcElement.dataset.param);
    }
}

第二种方法用于无法直接传参的情况。

创建新的初始化文件

构建一个简单的“代办事项”

# template

<!-- 文本框 -->
<input type="text" v-model="todo">
<!-- 添加按钮 -->
<button @click="add()">增加</button>
<hr>
<!-- 遍历数据 -->
<ul class="list">
    <!-- 使用 v-for="(单个对象, 该对象在集合中的下标)" 在循环中利用下标实现删除 -->
    <li v-for="(thing, key) of things" :key="thing.id"> {{ thing.id }} - {{ thing.todo }} <button @click="remove(key)">删除</button> </li>
</ul>

# script
export default {
  name: 'app',
  data() {
    return {
      todo: '', //文本框
      // 这是代办事项集合
      things: [
        {id: 1, todo: '请输入代办事项'},
      ],
    }
  },
  methods: {
    // 添加
    add() {
      // 先获得id
      var id = this.things.length;
      // 然后获取文本框能容
      var todo = this.todo;
      // 组装成和 things 中的每一项一样的格式(ES6语法, key: value 标识符是一样的时候,可以只写其中一个)
      var newThing = {id, todo};
      // 最后使用 push() 将新数据放进 this.things 中。
      this.things.push(newThing);
    },

    // 删除
    remove(key) {
      // 使用 splice(开始下标, 往后删除几个) 来删除数据 
      this.things.splice(key, 1);
    },
  }
}

# 修改 template
<ul class="list">
  <h2>代办</h2>
  <li v-for="(thing, key) of things" :key="thing.id" v-if="!thing.status">
      <input type="checkbox" v-model="thing.status">
      {{ thing.id }} - {{ thing.todo }} 
      <button @click="remove(key)">删除</button>
  </li>
  <hr>
  <h2>完成</h2>
  <li v-for="(thing, key) of things" :key="thing.id" v-if="thing.status" class="active">
      <input type="checkbox" v-model="thing.status">
      {{ thing.id }} - {{ thing.todo }} 
      <button @click="remove(key)">删除</button>
  </li>
</ul>

# 数据定义改一下
things: [
  {id: 0, todo: '请输入代办事项', status: false},
],  

上面的知识用了 nodeJS 提供的模块化思想:定义并且使用 export 暴露某个对象。然后在其他文件使用 import 引用一些被暴露的对象。实现对象分类封装。

上一篇 下一篇

猜你喜欢

热点阅读