• vue基础语法(上)


    目录

    一、插值

    1、文本

    2、html

    3、属性

    4、表达式

    5、class绑定

    6、style绑定

    二、指令

    1、核心指令

    注:v-show和v-if区别

    三、过滤器

    1、全局过滤器

    2、局部过滤器

    四、计算属性与监听属性

    1、计算属性

    2、监听属性

    3、计算属性和监听属性的区别 


    一、插值

    1、文本

              {{msg}}

    2、html

              使用v-html指令用于输出html代码          

    3、属性

              HTML属性中的值应使用v-bind指令

    4、表达式

              Vue提供了完全的JavaScript表达式支持

              {{str.substr(0,6).toUpperCase()}}

              {{ number + 1 }}

              {{ ok ? 'YES' : 'NO' }}

              

  • 我的Id是js动态生成的
  • 5、class绑定

      使用方式:v-bind:class="expression"

      expression的类型:字符串、数组、对象

    6、style绑定

      v-bind:style="expression"

      expression的类型:字符串、数组、对象

    案例

    1. html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js">script>
    6. <title>title>
    7. head>
    8. <body>
    9. <div id="app">
    10. {{msg}}
    11. <span v-html="htmlstr">span>
    12. <p>vue中的属性p>
    13. <a v-bind:href="hrefstr">百度一下a>
    14. <input :value="valuestr"/>
    15. <p>表达式p>
    16. {{str.substr(0,6).toUpperCase()}}<br />
    17. {{ number + 1 }}<br />
    18. {{ ok ? 'YES' : 'NO' }}<br />
    19. <span :id="'goods_'+id">xxspan>
    20. div>
    21. body>
    22. <script type="text/javascript">
    23. new Vue({
    24. el:"#app",
    25. data(){
    26. return{
    27. msg:'hhhhhh vue',
    28. htmlstr:'html代码',
    29. hrefstr:'http://www.baidu.com',
    30. valuestr:'2223',
    31. str:'我学的java语言',
    32. number:11,
    33. ok:false,
    34. id:1
    35. };
    36. }
    37. })
    38. script>
    39. html>

     

    二、指令

     指的是带有“v-”前缀的特殊属性

    1、核心指令

    v-if|v-else|v-else-if:根据其后表达式的bool值进行判断是否渲染该元素

    他们只能是兄弟元素

    v-else-if上一个兄弟元素必须是v-if

    v-else上一个兄弟元素必须是v-if或者是v-else-if

      v-show:与v-if类似,只是会渲染其身后表达式为false的元素,而且会给这样的元素添加css代码:style="display:none"

    注:v-show和v-if区别

    v-show会显示,只是加上了“style="display:none"”,而v-if不会显示

     

      v-for:类似JS的遍历,

     遍历数组: v-for="item in items", items是数组,item为数组中的数组元素

     遍历对象: v-for="(value,key,index) in stu", value属性值,key属性名,index下标 

    案例

    1. html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js">script>
    6. <title>title>
    7. head>
    8. <body>
    9. <div id="pp">
    10. <p>v-if|v-else|v-else-ifp>
    11. 分数:<input v-model="score" />
    12. 评价:
    13. <span v-if="score>80">优秀span>
    14. <span v-else-if="score>60">良好span>
    15. <span v-else="score<60">span>
    16. <p>v-showp>
    17. <span v-show="score>90">v-show-是否显示span>
    18. <span v-if="score>90">v-if-是否显示span>
    19. <p>v-forp>
    20. <select v-model="hobbySelected">
    21. <option v-for="h in hobby" :value="h.id">{{h.name}}option>
    22. select>
    23. <div v-for="h in hobby">
    24. <input :value="h.id" type=checkbox />{{h.name}}
    25. div>
    26. div>
    27. body>
    28. <script type="text/javascript">
    29. new Vue({
    30. el: '#pp',
    31. data() {
    32. return {
    33. score: 21,
    34. hobby: [{
    35. id: "1",
    36. name: "唱歌"
    37. },
    38. {
    39. id: "2",
    40. name: "跳舞"
    41. },
    42. {
    43. id: "3",
    44. name: "篮球"
    45. }
    46. ],
    47. hobbySelected: 1
    48. };
    49. }
    50. })
    51. script>
    52. html>

      

    三、过滤器

    1、全局过滤器

    Vue.filter('filterName', function (value) {

     // value 表示要过滤的内容

    });

    2、局部过滤器

    new Vue({

     filters:{'filterName':function(value){}}

    });

    vue允许你自定义过滤器,被用作一些常见的文本格式化,格式如下:

    {{ name | capitalize }}

    注1:过滤器函数接受表达式的值作为第一个参数

    注2:过滤器可以串联     

    {{ message | filterA | filterB }}

    注3:过滤器是JavaScript函数,因此可以接受参数:

    {{ message | filterA('arg1', arg2) }}

    注4:js定义一个类

    function Stu(){};

    Stu.prototype.add(a,b){};//添加一个新的实例方法

    Stu.update(a,b){};//添加一个新的类方法

    1. html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js">script>
    6. <title>title>
    7. head>
    8. <body>
    9. <div id="bpp">
    10. {{msg|all}}<br />
    11. {{msg|single}}<br />
    12. {{msg|all|single}}<br />
    13. {{msg|param(2,5)}}
    14. div>
    15. body>
    16. <script type="text/javascript">
    17. // 全局过滤器
    18. Vue.filter('all', function(value) {
    19. return value.substring(1, 4);
    20. });
    21. // 绑定边界 ES6具体体现
    22. new Vue({
    23. el: '#bpp',
    24. data() {
    25. return {
    26. msg:"abcdef"
    27. };
    28. },
    29. methods: {
    30. handle() {
    31. alert("触发事件");
    32. }
    33. },
    34. filters:{
    35. 'single':function(val){
    36. return val.substring(2,3);
    37. },
    38. 'param':function(val,start,end){
    39. return val.substring(start,end);
    40. }
    41. }
    42. })
    43. script>
    44. html>

    四、计算属性与监听属性

    1、计算属性

       计算属性可用于快速计算视图(View)中显示的属性。这些计算将被缓存,并且只在需要时更新

       computed:{}

    2、监听属性

       监听属性 watch,我们可以通过 watch 来响应数据的变化

       watch:{}

    1. html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js">script>
    6. <title>title>
    7. head>
    8. <body>
    9. <div id="app">
    10. <p>计算属性p>
    11. <table border="1" style="width: 600px;height: 300px;">
    12. <tr>
    13. <td>物品td>
    14. <td>单价td>
    15. <td>
    16. 数量
    17. td>
    18. <td>
    19. 小计
    20. td>
    21. tr>
    22. <tr>
    23. <td>帽子td>
    24. <td>{{maoziDanjia}}td>
    25. <td>
    26. <input v-model="maozi" />
    27. td>
    28. <td>
    29. {{maoziTotal}}
    30. td>
    31. tr>
    32. <tr>
    33. <td>衣服td>
    34. <td>{{yifuDanjia}}td>
    35. <td>
    36. <input v-model="yifu" />
    37. td>
    38. <td>
    39. {{yifuTotal}}
    40. td>
    41. tr>
    42. <tr>
    43. <td>裤子td>
    44. <td>{{kuziDanjia}}td>
    45. <td>
    46. <input v-model="kuzi" />
    47. td>
    48. <td>
    49. {{kuziTotal}}
    50. td>
    51. tr>
    52. <tr>
    53. <td>总价td>
    54. <td colspan="3">{{total}}td>
    55. tr>
    56. table>
    57. <p>监听属性p>
    58. 千米:<input v-model="km" />
    59. 米:<input v-model="m" />
    60. div>
    61. body>
    62. <script type="text/javascript">
    63. // 全局过滤器
    64. Vue.filter('all', function(value) {
    65. return value.substring(1, 4);
    66. });
    67. // 绑定边界 ES6具体体现
    68. new Vue({
    69. el: '#app',
    70. data() {
    71. return {
    72. maoziDanjia: 300,
    73. yifuDanjia: 1300,
    74. kuziDanjia: 2200,
    75. maozi: 1,
    76. yifu: 1,
    77. kuzi: 1,
    78. km: 2,
    79. m: 2000
    80. };
    81. },
    82. methods: {
    83. handle() {
    84. alert("触发事件");
    85. }
    86. },
    87. computed: {
    88. maoziTotal() {
    89. return this.maoziDanjia * this.maozi;
    90. },
    91. yifuTotal() {
    92. return this.yifuDanjia * this.yifu;
    93. },
    94. kuziTotal() {
    95. return this.kuziDanjia * this.kuzi;
    96. },
    97. total() {
    98. return this.maoziTotal + this.yifuTotal + this.kuziTotal;
    99. }
    100. },
    101. watch: {
    102. // v指的是m变量
    103. m: function(v) {
    104. this.km = parseInt(v) / 1000;
    105. },
    106. // v指的是km变量
    107. km: function(v) {
    108. this.m = parseInt(v) * 1000;
    109. }
    110. }
    111. })
    112. script>
    113. html>

     3、计算属性和监听属性的区别 

    computed用来监控自己定义的变量,该变量不在data里面声明,直接在computed里面定义,然后就可以在页面上进行双向数据绑定展示出结果或者用作其他处理;
    computed比较适合对多个变量或者对象进行处理后返回一个结果值,也就是数多个变量中的某一个值发生了变化则我们监控的这个值也就会发生变化,

    与watch之间的区别:
    watch主要用于监控vue实例的变化,它监控的变量当然必须在data里面声明才可以,它可以监控一个变量,也可以是一个对象

  • 相关阅读:
    调试MT9V024
    外包干了2个月,技术退步明显.......
    03- ROS 常用指令
    查找算法——插值查找法
    【萌新向】Sql Server保姆级安装教程-图文详解手把手教你安sql
    【笔记】Oracle不同数据库之间的表级别同步
    诚邀莅临 | 天奥智能参展第86届中国国际医疗器械博览会
    java计算机毕业设计竞赛信息发布及组队系统源码+数据库+lw文档+系统
    [Druid-1.2.11源码系列]-7-mysql-connector-java驱动包内部的创建数据库连接对象的过程
    如何在Next.js中使用react-viewer图片预览
  • 原文地址:https://blog.csdn.net/m0_62528678/article/details/126668391