vue之菜单添加选择,知识:数据双向绑定、循环渲染、事件点击

要求:

1.可以增加菜名

2.可以删除菜名

3.点击选择菜名后自动增加到已选菜单中

4.可以在已选菜单中取消选择

代码:

<template>
  <div>
    <input type="text" ref="add">
    <button @click="addE()">增加菜名</button>
    <hr />
    <h2>当前菜名</h2>
    <ul>
      <li v-for="(item,key) in list" :key="key" v-if="!item.checked">
        <input type="checkbox" v-model="item.checked">{{item.title}} - - -
        <button @click="delE(key)">删除</button>
      </li>
    </ul>
    <hr />
    <h2>已选菜名</h2>
    <ul>
      <li v-for="(item,key) in list" :key="key" v-if="item.checked">
        <input type="checkbox" v-model="item.checked">{{item.title}} - - -
        <button @click="delE(key)">删除</button>
      </li>
    </ul>

  </div>
</template>

<script>
  export default {
    name: "app",
    data() {
      return {
        list:[
          {"title":"宫保鸡丁","checked":false},
          {"title":"鱼香肉丝","checked":false},
          {"title":"水煮肉片","checked":false},
          {"title":"辣条辣条","checked":false},
        ]
      }
    },
    methods:{
      delE(key){
        this.list.splice(key,1)
      },
      addE(){
        this.list.unshift({
          "title":this.$refs.add.value,
          "checked":false
        })
      }
    }
  }
</script>

演示:

1.初始化

2.选择菜品

3.删除菜品

4.添加菜品

要求:

在原基础上,实现 在添加菜名时输入完毕后按回车键进行添加,而不是点击按钮。

通过geikeydown来绑定点击事件,传递事件对象来实现

<template>
  <div>
    <input type="text" ref="add" @keydown="addE($event)">
    <button @click="addE($event)">增加菜名</button>
    <hr />
    <h2>当前菜名</h2>
    <ul>
      <li v-for="(item,key) in list" :key="key" v-if="!item.checked">
        <input type="checkbox" v-model="item.checked">{{item.title}} - - -
        <button @click="delE(key)">删除</button>
      </li>
    </ul>
    <hr />
    <h2>已选菜名</h2>
    <ul>
      <li v-for="(item,key) in list" :key="key" v-if="item.checked">
        <input type="checkbox" v-model="item.checked">{{item.title}} - - -
        <button @click="delE(key)">删除</button>
      </li>
    </ul>

  </div>
</template>

<script>
  export default {
    name: "app",
    data() {
      return {
        list:[
          {"title":"宫保鸡丁","checked":false},
          {"title":"鱼香肉丝","checked":false},
          {"title":"水煮肉片","checked":false},
          {"title":"辣条辣条","checked":false},
        ]
      }
    },
    methods:{
      delE(key){
        this.list.splice(key,1)
      },
      addE(e){
        if(e.keyCode === 13){
        this.list.unshift({
          "title":this.$refs.add.value,
          "checked":false
        })}
      }
    }
  }
</script>

原文地址:https://www.cnblogs.com/zhangjunkang/p/10143945.html

时间: 2024-11-08 21:46:16

vue之菜单添加选择,知识:数据双向绑定、循环渲染、事件点击的相关文章

Vue.js线程机制问题还是数据双向绑定有延迟的问题

最近用select2做一个下拉多选,若只是从后端获取一个列表渲染还好说,没有任何问题.但要用select2对数据初始化时进行selected的默认选项进行显示,就出现问题了. vm.$set('areas', data.data); areaIdsSelect2(); areaIdsSelect2Change(); 区域没有显示出默认的selected.此时做一个定时器, vm.$set('areas', data.data); setTimeout(function () { areaIdsS

数据双向绑定

数据双向绑定 页面渲染 服务端渲染 浏览器端渲染 浏览器端渲染 提高开发效率和减少维护成本,前后端协作模式: 后端 提供接口 前端 视图和交互逻辑.通过Ajax请求数据,拼接html字符串或者使用js模板引擎.数据驱动的框架如Vue进行页面渲染. 在ES6和Vue这类框架出现以前,前端绑定数据的方式: 动态拼接html字符串 js模板引擎. 作用:分离 数据和视图.模板对应视图,关注如何展示数据,在模板外头准备的数据, 关注那些数据可以被展示. 工作原理 两个步骤: 模板解析 / 编译(Pars

vue中数据双向绑定的实现原理

vue中最常见的属v-model这个数据双向绑定了,很好奇它是如何实现的呢?尝试着用原生的JS去实现一下. 首先大致学习了解下Object.defineProperty()这个东东吧! * Object.defineProperty() * 对对象的属性进行 定义/修改 * */ let obj = {x:10} // 这两种方式都相对来说比较简单,直接,但是有些时候我们需要对对象的属性的修改和增加进行必要的干预 // obj.y = 20; // obj.x = 100; // obj.x =

Vue数据双向绑定原理及简单实现

嘿,Goodgirl and GoodBoy,点进来了就看完点个赞再go. Vue这个框架就不简单介绍了,它最大的特性就是数据的双向绑定以及虚拟dom.核心就是用数据来驱动视图层的改变.先看一段代码. 一.示例 var vm = new Vue({ data: { obj: { a: 1 } }, created: function () { console.log(this.obj); } }); 二.实现原理 vue数据双向绑定是通过数据劫持结合发布者-订阅者模式的方式来实现的. 1)数据劫

VUE的数据双向绑定

1.概述 让我们先来看一下官网的这张数据绑定的说明图: 原理图告诉我们,a对象下面的b属性定义了getter.setter对属性进行劫持,当属性值改变是就会notify通知watch对象,而watch对象则会notify到view上对应的位置进行更新(这个地方还没讲清下面再讲),然后我们就看到了视图的更新了,反过来当在视图(如input)输入数据时,也会触发订阅者watch,更新最新的数据到data里面(图中的a.b),这样model数据就能实时响应view上的数据变化了,这样一个过程就是数据的

深入理解Proxy 及 使用Proxy实现vue数据双向绑定

阅读目录 1.什么是Proxy?它的作用是? 2.get(target, propKey, receiver) 3.set(target, propKey, value, receiver) 4.has(target, propKey) 5.construct(target, args, newTarget): 6.apply(target, object, args) 7.使用Proxy实现简单的vue双向绑定 回到顶部 1.什么是Proxy?它的作用是? 据阮一峰文章介绍:Proxy可以理解

vue(原理)_数据双向绑定

1.双向绑定: 1) 双向数据绑定是建立在单向数据绑定(model==>View)的基础之上的2) 双向数据绑定的实现流程:a. 在解析v-model 指令时, 给当前元素添加input 监听b. 当input 的value 发生改变时, 将最新的值赋值给当前表达式所对应的data 属性 2.具体实现 3.测试代码 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <ti

Vue数据双向绑定(面试必备) 极简版

我又来吹牛逼了,这次我们简单说一下vue的数据双向绑定,我们这次不背题,而是要你理解这个流程,保证读完就懂,逢人能讲,面试必过,如果没做到,请再来看一遍,走起: 介绍双向数据之前,我们先解释几个名词: 1.setter.getter 答:首先,别误以为他们就是一会要说的get.set, 原文地址:https://www.cnblogs.com/webcabana/p/11077628.html

vue中v-model 数据双向绑定

表单输入绑定 v-model 数据双向绑定,只能应用在input /textare /select <div id="app"> <input type="text" v-model="msg"> <p>{{ msg }}</p> </div> <script src="vue.js"></script> <script> new