• Vue基础语法2&事件修饰符&按键修饰符&常用控件&自定义指令&全局&样式绑定


    目录

    1.样式绑定

    2. 事件修饰符

    3. 按键修饰符

    4. 常用控件

    4.1 常用控件示例

    4.2 修饰符

    5. 自定义指令

    5.1 局部

    5.2 全局


    1.样式绑定

    • class绑定
      使用方式:v-bind:,expression的类型:字符串、数组、对象
    • style绑定
      v-bind:style="expression", expression的类型:字符串、数组、对象

    示例:

    1. <--定义示例样式-->
    2. <style>
    3. .fontClass {
    4. font-size: 40px;
    5. }
    6. .colorClass {
    7. color: red;
    8. }
    9. </style>
    10. <!--使用-->
    11. <p>
    12. <span v-bind:class="fc">fafa</span>
    13. </p>
    14. <p>
    15. <!--简写-->
    16. <span :class="ac">fafa</span>
    17. </p>
    18. <p>
    19. <!--直接使用style样式单-->
    20. <span style="font-size: 40px; color:blue;">aaa</span>
    21. <br/>
    22. <!-- 使用vue,样式名称为驼峰风格 。花括号,多个属性逗号分隔-->
    23. <span :style="{fontSize:fontSize+'px',color: color}">bbb</span>
    24. <br/>
    25. <span :style="myStyle">test</span>
    26. </p>
    1. var vm = new Vue({
    2. el: "#app",
    3. data: {
    4. fc: 'fontClass',
    5. ac: ['fontClass', 'colorClass'],
    6. fontSize: 40,
    7. color: 'green',
    8. //样式对象,注意:样式名使用驼峰命名,如:fontSize
    9. myStyle: {
    10. fontSize: '50px',
    11. color:'red',
    12. fontWeight: 'bold'
    13. }
    14. }
    15. });

    2. 事件修饰符

    几个常用的事件修饰符:






    • ...

    示例:

    1. <div>接收消息:{{receverMsg}}</div>
    2. <p>
    3. <!--响应多次或一次点击事件-->
    4. <input type="text" v-model="sendMsg">
    5. <button @click="sender">发送(多次)</button>
    6. <button @click.once="sender">发送(一次)</button>
    7. </p>
    8. <p>
    9. <!-- 阻止表单提交 -->
    10. <form action="testAction.action" method="post" @submit.prevent="doSubmit()">
    11. <label>名称</label>
    12. <input type="text" name="name"/>
    13. <input type="submit" value="提交"/>
    14. </form>
    15. </p>
    1. var vm = new Vue({
    2. el: "#app",
    3. data: {
    4. receverMsg: null,
    5. sendMsg: null
    6. },
    7. methods: {
    8. sender: function() {
    9. this.receverMsg = this.sendMsg;
    10. },
    11. doSubmit: function() {
    12. alert('ok');
    13. }
    14. }
    15. });

    3. 按键修饰符

    Vue允许为v-on在监听键盘事件时添加按键修饰符。
    示例:

    1. <input v-on:keyup.13="submit">
    2. <input v-on:keyup.enter="submit">

    示例:响应enter键事件

    <input type="text" @keyup.13="doSubmit" v-model="name">

     

    1. var vm = new Vue({
    2. el: "#app",
    3. data: function() {
    4. return {
    5. name: 'hello vue'
    6. }
    7. },
    8. methods: {
    9. doSubmit: function() {
    10. alert("响应enter," + this.name);
    11. }
    12. }
    13. });

    4. 常用控件

    4.1 常用控件示例

    通过实现一个类型注册的页面,熟悉常用的控件。文本框/密码框/文本域/单选/多选/下拉列表

    1. <div id="app">
    2. <div>
    3. <label>账号:</label>
    4. <input type="text" v-model="uname">
    5. </div>
    6. <div>
    7. <label>密码:</label>
    8. <input type="password" v-model="upwd">
    9. </div>
    10. <div>
    11. <label>年龄:</label>
    12. <input type="text" v-model="age" >
    13. </div>
    14. <div>
    15. <label>性别:</label>
    16. <input type="radio" v-model="sex" value="1">
    17. <input type="radio" v-model="sex" value="2">
    18. </div>
    19. <div>
    20. <label>爱好:</label>
    21. <div style="display: inline;" v-for="h in hobbies">
    22. <input type="checkbox" :value="h.id" v-model="hobby"/>{{h.name}}
    23. </div>
    24. </div>
    25. <div>
    26. <label>地区</label>
    27. <select v-model="selectedCity">
    28. <option value="">-- 请选择 --</option>
    29. <option v-for="c in city" :value="c.id">{{c.name}}</option>
    30. </select>
    31. </div>
    32. <div>
    33. <label>备注:</label>
    34. <textarea v-model="remark"></textarea>
    35. </div>
    36. <div>
    37. <input type="checkbox" v-model="flag">是否已阅读并同意协议
    38. </div>
    39. <div>
    40. <button @click="submit" :disabled="disabled">提交</button>
    41. </div>
    42. </div>
    1. var vm = new Vue({
    2. el: "#app",
    3. data: {
    4. uname: '',
    5. upwd:'',
    6. age:'',
    7. sex: 1,
    8. //用于通过v-for指令输出多选框列表
    9. hobbies:[
    10. {id: '1', name:'打游戏'},
    11. {id: '2', name:'编程'},
    12. {id: '3', name:'旅游'}
    13. ],
    14. /*
    15. * 用于通过v-model双向绑定,保存用户的选择。
    16. * 此处为多选,需要通过数组接收,否则无法
    17. * 正常接收复选框的值,且复选框的行为也不正常,
    18. * 可能出现要么全部被选择,要么全部被取消的情况
    19. */
    20. hobby:[],
    21. remark: null,
    22. //用于生成地区选择列表
    23. city:[
    24. {id:"1", name:"长沙"},
    25. {id:"1", name:"株洲"},
    26. {id:"1", name:"湘潭"}
    27. ],
    28. //用于保存用户选择的地区
    29. selectedCity: '',
    30. //是否同意协议,默认值为false
    31. agreed:false,
    32. //提交按钮是否禁用,默认为true
    33. disabled: true
    34. },
    35. //监控agreed属性,如果同意协议则将提交按钮
    36. //设置为可用,否则提交按钮为禁用状态
    37. watch: {
    38. agreed: function(val) {
    39. if(val) {
    40. this.disabled = false;
    41. }else{
    42. this.disabled = true;
    43. }
    44. }
    45. },
    46. methods: {
    47. submit: function() {
    48. let data = {
    49. uname: this.uname,
    50. upwd: this.upwd,
    51. age:this.age,
    52. sex: this.sex,
    53. hobby: this.hobby,
    54. city: this.selectedCity,
    55. remark: this.remark
    56. }
    57. console.log(data);
    58. }
    59. }
    60. });

    不使用监视器的简单方式: 删除监听器,然后将提交按钮的做如下修改

    <button @click="submit" :disabled="!agreed">提交</button>

    4.2 修饰符

    以.number为例,示例修饰符的使用,将输入的年龄属性转换为数值型

    1. <div>
    2. <label>年龄:</label>
    3. <input type="text" v-model.number="age" >
    4. </div>

     

    5. 自定义指令

    Vue除支持内置的v-model/v-show等指令,还允许自定义指令。 vue2中,代码的复用和抽象的主要形式是组件,但在有些情况下仍然需要对普通dom元素做底层操作,这种情况下需要自定义指令。根据自定义指令的作用范围,可分为:全局、局部两种

    钩子函数:

    指令钩子函数会被传入以下参数:

    • el:指令所绑定的元素,可以用来直接操作 DOM 。
    • binding:一个对象,包含以下属性:
      1) name:指令名,不包括 v- 前缀。
      2) value:指令的绑定值,例如:v-my-directive="1 + 1" 中,绑定值为 2。
      3) oldValue:指令绑定的前一个值,仅在 update 和 componentUpdated 钩子中可用。无论值是否改变都可用。
      4) expression:字符串形式的指令表达式。例如 v-my-directive="1 + 1" 中,表达式为 "1 + 1"。
      5) arg:传给指令的参数,可选。例如 v-my-directive:foo 中,参数为 "foo"。
      6) modifiers:一个包含修饰符的对象。例如:v-my-directive.foo.bar 中,修饰符对象为 { foo: true, bar: true }。
    • vnode:Vue 编译生成的虚拟节点。移步 VNode API 来了解更多详情。
    • oldVnode:上一个虚拟节点,仅在 update 和 componentUpdated 钩子中可用。

    5.1 局部

    通过自定义标签设置文字颜色

    1. <div id="app">
    2. <!--red绑定到data里面的变量-->
    3. <p v-color="red">我是自定义指令</p>
    4. </div>

     

    1. var vm = new Vue({
    2. el: '#app',
    3. data: {
    4. red:'red'
    5. },
    6. //自定义指令,局部
    7. directives:{
    8. color: {
    9. inserted: function(el,binding) {
    10. console.log(el,binding);
    11. el.style.color = binding.value;
    12. }
    13. }
    14. }
    15. });

    5.2 全局

    1. <div id="app">
    2. <!--red绑定到data里面的变量-->
    3. <p v-color="red">我是自定义指令</p>
    4. </div>
    1. //自定义标签,全局
    2. Vue.directive('color', {
    3. inserted: function(el,binding) {
    4. console.log(el,binding);
    5. el.style.color = binding.value;
    6. }
    7. })
    8. var vm = new Vue({
    9. el: '#app',
    10. data: {
    11. red:'red'
    12. }
    13. });

  • 相关阅读:
    HTML+CSS美食静态网站设计【海鲜网站】web结课作业的源码 web网页设计实例作业
    如何做到低风险的部署与发布?(下)丨IDCF
    VMware 与 SmartX 超融合 I/O 路径对比与性能影响解析
    Java volatile功能简介说明
    SpringBoot 中的 Liquibase 适配达梦数据库(DM)和 Flowable 工作流
    MySQL如何记忆
    nuc980学习笔记6 - 手把手教 源码编译和YAFFS2文件系统制作
    Makerbase SimpleFOC ESP32 例程12 双霍尔电机位置控制
    蓝桥杯打卡Day10
    计算机辅助药物设计- - 从蛋白质结构到药物候选物的全方位实战
  • 原文地址:https://blog.csdn.net/qq_73126462/article/details/133944465