学习vue笔记(3)

v-model的使用

作用:vue中使用v-model指令来实现表单元素和数据的双向绑定。

实际效果:
在这里插入图片描述
在这里插入图片描述

通过v-model实现了双向的绑定,插入到DOM中,所以DOM会发生相应的改变。

原理:v-model是一个语法糖,本质上其实是两个操作:

1.v-bind绑定一个value属性;

2.v-on指令给当前元素绑定input事件。

<input type="text" v-model="message">
等同于
<input type="text" v-bind:value="message" v-on:input="message = $event.target.value">

一、v-model结合radio类型

radio对象:radio 对象代表 HTML 表单中的单选按钮。

1.点击男时,相对应的{{h2}}标签里也显示男:

在这里插入图片描述

2.点击女时,相对应的{{h2}}标签里也显示女:

在这里插入图片描述
源码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>

<div id="app">
  <label for="male">
    <input type="radio" id="male" value="男" v-model="sex"></label>
  <label for="female">
    <input type="radio" id="female" value="女" v-model="sex"></label>
  <h2>{{sex}}</h2>
</div>
<script src="../js/vue.js"></script>
<script>
  const app = new Vue({
    el:"#app",
    data:{
      message:"你好",
      sex:'男'
    }
  })
</script>

</body>
</html>

二、v-model结合checkbox类型

checkbox:定义复选框,允许用户在一定数目的选择中选取一个或多个选项。

1.单个勾选框:(v-model即为布尔值,此时input的value不影响value的值)同意协议时,只有当勾选结果为true时,可以进行下一步;为false时不能进行下一步:

在这里插入图片描述
在这里插入图片描述

2.多个复选框:(当多个复选框时,因为可以选中多个,所以对应的data中的属性是一个数组,当选中某一个时,就会将input的value添加到数组中)点击多个复选框时,可以将选择的内容添加到图中所特写的数组中,实现双向绑定:

在这里插入图片描述
在这里插入图片描述
源码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>

<div id="app">
  <label for="agree">
    <input type="checkbox" id="agree" v-model="isAgree">同意协议
  </label>
  <h2>{{isAgree}}</h2>
  <button :disabled="!isAgree">下一步</button>
  <label for="">
    <input type="checkbox" value="篮球" v-model="hobbies">篮球
    <input type="checkbox" value="足球" v-model="hobbies">足球
    <input type="checkbox" value="乒乓球" v-model="hobbies">乒乓球
    <input type="checkbox" value="羽毛球" v-model="hobbies">羽毛球
  </label>
  <h2>您的爱好是:{{hobbies}}</h2>
</div>
<script src="../js/vue.js"></script>
<script>
  const app = new Vue({
    el:"#app",
    data:{
      message:"你好",
      isAgree:false,
      hobbies:[]
    }
  })
</script>

</body>
</html>

三、v-model结合select类型

select:select元素可创建单选或多选菜单。

1.单选:(v-model绑定的是一个值,当选中options中的一个时,会将它对应的value赋值到myselect中)选择一个水果时:在下拉菜单中选择水果,{{h2}}标签显示相对应的水果

在里插入图片描述

2.多选:(v-model绑定的是一个数组,选中多个值时,会将选中的options对应的value添加到数组myselect中)选择多个水果时:按住ctrl选择多个水果,{{h2}}标签将对应的水果显示在数组中

在这里插入图片描述
源码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>

<div id="app">
<!--  1.选择一个-->
  <select name="abc" id="" v-model="fruit">
    <option value="苹果" >苹果</option>
    <option value="香蕉" >香蕉</option>
    <option value="榴莲" >榴莲</option>
    <option value="葡萄" >葡萄</option>
  </select>
  <h2>您选择的水果是:{{fruit}}</h2>

  <!--  2.选择多个-->
  <select name="abc" id="" v-model="fruits" multiple>
    <option value="苹果" >苹果</option>
    <option value="香蕉" >香蕉</option>
    <option value="榴莲" >榴莲</option>
    <option value="葡萄" >葡萄</option>
  </select>
  <h2>您选择的水果是:{{fruits}}</h2>
</div>
<script src="../js/vue.js"></script>
<script>
  const app = new Vue({
    el:"#app",
    data:{
      message:"你好",
      fruit:'香蕉',
      fruits:[]
    }
  })
</script>

</body>
</html>

四、v-model修饰符的使用

1.lazy修饰符

lazy修饰符添加后,标签中的结果不会立即随着输入的改变而改变,而是数据失去焦点或者回车才会更新。

2.number修饰符

number修饰符可以让在输入框中输入的内容自动转成数字类型。

3.trim修饰符

trim修饰符可以过滤内容左右两边的空格。

<think>好的,我现在需要帮助用户寻找关于Vue3学习资料或笔记。首先,用户已经提供了一些参考引用,其中提到了创建Vue3工程的方法和npm版本的要求。我需要结合这些信息,整理出一个结构清晰的回答,并生成相关问题。 首先,我应该检查用户提供的引用内容。引用[1]提到了基于vue-cli创建Vue3工程,以及学习建议,比如多练习和查看官网。引用[2]则涉及npm版本的要求。这些都是学习Vue3的基础,需要包含在回答中。 接下来,我需要确保回答符合系统级指令的要求。比如,所有行内数学表达式要用$...$,但这里可能不涉及数学公式,所以可能不需要。但需要检查是否有其他格式要求。独立公式用$$...$$,但同样可能不适用。需要确保LaTeX语法正确,但问题主要关于Vue3,可能用不上数学表达式,这点需要注意。 回答需要用中文,结构清晰,分步骤解决问题。用户需要教程和笔记,所以应该列出官方资源、推荐教程、实践项目、社区资源、笔记技巧等。同时,每个部分末尾如果有引用到用户提供的引用内容,需要添加引用标识,如[^1]或[^2]。 然后,生成相关问题。根据用户的需求,相关问题可能涉及学习路线、官方文档重点、项目推荐、常见问题解决、调试技巧等。这些问题需要与Vue3学习相关,并且能够帮助用户进一步深入学习。 现在,我需要组织内容。首先,介绍官方文档和工具,提到vue-cli创建工程和npm版本要求,引用[1]和[2]。然后推荐免费教程,如B站视频和实战课程,接着是书籍和付费课程。实践项目部分可以建议TodoList、电商后台等。社区资源包括GitHub、掘金、Stack Overflow。最后,笔记技巧部分,强调多练习,参考引用[1]。 在生成相关问题的时候,需要确保问题覆盖学习路线、文档重点、项目实践、常见问题、调试工具、Vue3新特性以及与其他框架比较等。这样用户可以有方向地继续学习。 最后,检查是否符合所有格式要求,没有使用任何markdown,正确添加引用标识,语言自然口语化,没有使用专业格式。确保LaTeX部分如果有的话正确,但在这个问题中可能不需要,所以可以忽略。确认回答结构清晰,分点明确,帮助用户逐步找到所需资料。</think>以下是关于Vue3学习资料和整理建议,结合实践经验和参考资料: ### 一、官方核心资源 1. **Vue3官方文档** 必读部分:响应式基础、组合式API、Teleport组件、Vite工程配置 示例代码: ```javascript // 组合式API示例 import { ref, computed } from &#39;vue&#39; export default { setup() { const count = ref(0) const double = computed(() => count.value * 2) return { count, double } } } ``` 2. **Vue CLI工具** 创建项目时注意npm版本需≥8.0(可通过`npm install -g npm@latest`升级) ```bash vue create vue3-demo ``` ### 二、高效学习路径 1. **新手入门阶段(1-2周)** - 完成官方交互式教程 - 实现基础功能:组件通信、路由配置 - 参考案例:TodoList + 天气查询API对接 2. **进阶提升阶段(3-4周)** - 掌握Vuex状态管理 - 学习TypeScript集成 - 实战项目:电商商品管理系统 ### 三、精选学习资源 || 资源类型 | 推荐内容 | 特点 | |---|---|---|---| |1|视频教程|B站「尚硅谷Vue3教程」|项目驱动教学| |2|开源项目|vue3-element-admin|后台管理系统模板| |3|工具链|Vite + Pinia + VueUse|现代开发套件| ### 四、典型问题解决方案 1. **响应式数据失效** 使用`toRefs`解构props: ```javascript import { toRefs } from &#39;vue&#39; export default { setup(props) { const { title } = toRefs(props) return { title } } } ``` 2. **组件通信优化** 优先使用provide/inject代替多层prop传递
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值