IT评测·应用市场-qidao123.com

标题: Vue入门(Vue根本语法、axios、组件、变乱分发) [打印本页]

作者: 科技颠覆者    时间: 2025-1-24 04:39
标题: Vue入门(Vue根本语法、axios、组件、变乱分发)
Vue入门

Vue概述

Vue (读音/vju/,类似于view)是一套用于构建用户界面的渐进式框架,发布于2014年2月。与其它大型框架不同的是,Vue被计划为可以自底向上逐层应用。Vue的核心库只关凝视图层,不仅易于上手,还便于与第三方库(如: vue-router:跳转,vue-resource:通讯,vuex:管理)或既有项目整合。
什么是MVVM

MVVM(Model-View-ViewModel)是一种软件计划模式,由微软WPF(用于更换WinForm,从前就是用这个技术开发桌面应用程序的)和Silverlight(类似于Java Applet,简单点说就是在欣赏器上运行WPF)的架构师Ken Cooper和Ted Peters开发,是一种简化用户界面的变乱驱动编程方式。由John Gossman(同样也是WPF和Sliverlight的架构师)与2005年在他的博客上发表。
MVVM源自于经典的MVC(Model-View-Controller)模式。MVVM的核心是ViewModel层,负责转换Model中的数据对象来让数据变得更轻易管理和使用。其作用如下:
该层向上与视图层进行双向数据绑定
向下与Model层通过接口请求进行数据交互
MVVM已经相当成熟了,主要运用但不仅仅在网络应用程序开发中。当卑鄙行的MVVM框架有Vue.js,Anfular JS
长处

MVVM模式和MVC模式一样,主要目标是分离视图(View)和模型(Model),有几大利益

(1)View
  View是视图层, 也就是用户界面。前端主要由HTML和CSS来构建, 为了更方便地显现vi ew Model大概Model层的数据, 已经产生了各种各样的前后端模板语言, 好比FreeMarker,Thymeleaf等等, 各大MVVM框架如Vue.js.Angular JS, EJS等也都有本身用来构建用户界面的内置模板语言。
(2)Model
  Model是指数据模型, 泛指后端进行的各种业务逻辑处理惩罚和数据操控, 主要围绕数据库体系睁开。这里的难点主要在于需要和前端约定统一的接口规则
(3)ViewModel
  ViewModel是由前端开发人员构造生成和维护的视图数据层。在这一层, 前端开发者对从后端获取的Model数据进行转换处理惩罚, 做二次封装, 以生成符合View层使用预期的视图数据模型。
需要注意的是View Model所封装出来的数据模型包括视图的状态和举动两部门, 而Model层的数据模型是只包罗状态的。
好比页面的这一块展示什么,那一块展示什么这些都属于视图状态(展示)
页面加载进来时发生什么,点击这一块发生什么,这一块滚动时发生什么这些都属于视图举动(交互)
  视图状态和举动都封装在了View Model里。这样的封装使得View Model可以完整地去形貌View层。由于实现了双向绑定, View Model的内容会及时显现在View层, 这是激动人心的, 因为前端开发者再也不必低效又麻烦地通过操纵DOM去更新视图。
MVVM框架已经把最脏最累的一块做好了, 我们开发者只需要处理惩罚和维护View Model, 更新数据视图就会自动得到相应更新,真正实现变乱驱动编程。
View层显现的不是Model层的数据, 而是ViewModel的数据, 由ViewModel负责与Model层交互, 这就完全解耦了View层和Model层, 这个解耦是至关重要的, 它是前后端分离方案实行的重要一环。
第一个Vue程序;
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.   <meta charset="UTF-8">
  5.   <title>Document</title>
  6.   <!-- 1.导入vue.js -->
  7.   <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
  8. </head>
  9. <body>
  10. <!-- view 层 模板 -->
  11. <div id="app">
  12.   {{message}}
  13. </div>
  14. <script>
  15.   var vm = new Vue({
  16.     el: "#app",
  17.     // model :  数据
  18.     data:{
  19.       message:"hello Vue"
  20.     }
  21.   });
  22. </script>
  23. </body>
  24. </html>
复制代码

el: ‘#test’:绑定元素的ID,好玩的,地方在于我们可以在欣赏器中操作vm对象来动态的修改参数,这和jQuery有点类似。

MVVM架构中最重要的就是ModelView层它可以提供JSON和Ajax来实现与Model层的交互

大差不差就是这个样子。我们可以感受到他是不需要改变DOM元素的,这就让我们的开发大大解耦了
因为我们对页面内容可以动态的修改,这样避免了大量的刷新。
{{message}}其实就是假造DOM元素
Vue根本语法

七大属性


Vue的7种指令


下面作详细先容:
v-bind

v-bind 指令指示 Vue 将元素的 id attribute 与组件的 dynamicId 属性保持一致。假如绑定的值是 null 大概 undefined,那么该 attribute 将会从渲染的元素上移除。
因为 v-bind 非经常用,我们提供了特定的简写语法:
  1. <!-- 与 :id="id" 相同 -->
  2. <div :id></div>
  3. <!-- 这也同样有效 -->
  4. <div v-bind:id></div>
复制代码
  1. <div :id="dynamicId"></div>
复制代码
开头为 : 的 attribute 大概和一般的 HTML attribute 看起来不太一样,但它的确是合法的 attribute 名称字符,并且全部支持 Vue 的欣赏器都能正确剖析它。此外,他们不会出现在终极渲染的 DOM 中。简写语法是可选的,但信任在你了解了它更多的用处后,你应该会更喜欢它。
  1. <div id="app">
  2.   <span v-bind:title="message">鼠标悬停几秒钟</span>
  3. </div>
复制代码

鼠标悬停就会显示tittle里面的内容。
v-bind指令的一些注意事项
不能在属性值内直接写入以下语法
  1. <h1 :style="font-size:50px;color:red;">this is test</h1>
复制代码
这是错误的,因为vue会把font-size当成一个data数据!
办理方式如下
  1. <h1 :style="'font-size:50px;color:red;'">this is test</h1>
复制代码
可以看到只需要在总的样式前后各加上一个 ’ 单引号即可!这样他就会把他看成字符串了,不过假如我们这么加样式就没有必要写v-bind
判断循环

  1. <body>
  2. <div id="tst">
  3.   <h1 v-if="ok">true</h1>
  4.   <h1 v-else>NO</h1>
  5. </div>
  6. <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
  7. <script>
  8.   var vm=new Vue({
  9.     el: "#tst",
  10.     data: {
  11.       ok: true
  12.     }
  13.   });
  14. </script>
  15. </body>
复制代码


  1. <body>
  2. <div id="tst">
  3.   <h1 v-if="type==='a'">A</h1>
  4.   <h1 v-else-if="type==='b'">B</h1>
  5.   <h1 v-else-if="type==='c'">C</h1>
  6.   <h1 v-else-if="type==='d'">D</h1>
  7.   <h1 v-else>No</h1>
  8. </div>
  9. <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
  10. <script>
  11.   var vm=new Vue({
  12.     el: "#tst",
  13.     data: {
  14.       type: 'a'
  15.     }
  16.   });
  17. </script>
  18. </body>
复制代码

  1. <body>
  2. <div id="tst">
  3.   <li v-for="item in items">
  4.     {{item.message}}
  5.   </li>
  6. </div>
  7. <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
  8. <script>
  9.   var vm=new Vue({
  10.     el: "#tst",
  11.     data: {
  12.       items: [
  13.         {message: '吃饭'},
  14.         {message: '睡觉'},
  15.         {message: '厕所'},
  16.       ]
  17.     }
  18.   });
  19. </script>
  20. </body>
复制代码

  1. <div id="tst">
  2.   <li v-for="(item,index) in items">
  3.     {{item.message}}--{{index}}
  4.   </li>
  5. </div>
复制代码
我们也可以在此中界说一个数组让他输出

methods方法

方法必须界说在Vue的method中。
  1. <script>
  2.     var vm=new Vue({
  3.         el:"#app",
  4.         data:{
  5.             message:"Hello Vue"
  6.         },
  7.         methods:{
  8.             sayHi:function (event){
  9.                 alert(this.message);
  10.             }
  11.         }
  12.     })
  13. </script>
复制代码
在methods中界说一个方法记得添加变乱监听event,然后
  1. <div id="app">
  2.     <button v-on:click="sayHi">click</button>
  3. </div>
复制代码
界说一个按钮用v-on:click绑定变乱,最重要的是不要忘了引入标签
  1. <html lang="en" xmlns:v-on="http://www.w3.org/1999/xhtml">
复制代码
  1. <!DOCTYPE html><html lang="en" xmlns:v-on="http://www.w3.org/1999/xhtml">
  2. <head>    <meta charset="UTF-8">    <title>Title</title></head><body><div id="app">
  3.     <button v-on:click="sayHi">click</button>
  4. </div>
  5. <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script><script>
  6.     var vm=new Vue({
  7.         el:"#app",
  8.         data:{
  9.             message:"Hello Vue"
  10.         },
  11.         methods:{
  12.             sayHi:function (event){
  13.                 alert(this.message);
  14.             }
  15.         }
  16.     })
  17. </script>
  18. </body></html>
复制代码

这样我们就绑定了一个变乱。在不确定绑定变乱的时间我们可以查看这个网站jQuery API 中文文档 | jQuery中文网
数据双向绑定(v-model)

Vue.js是一个MVVM矿建,即数据双向绑定,当数据发生变化时,视图也会发生变化,当视图发生变化的时间,数据也会跟着同步变化,这也算是Vue.js的精髓之处。
我还是喜欢用代码语言,大家来体会。这里我们要用到v-model标签。
  1. <body>
  2. <div id="app">
  3.   输入文本:<input type="text" v-model="message">{{message}}
  4. </div>
  5. <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
  6. <script>
  7.   var vm=new Vue({
  8.     el:"#app",
  9.     data:{
  10.       message:"123"
  11.     }
  12.   })
  13. </script>
  14. </body>
复制代码
在这里通过v-model把文本框和下面的message绑定到一起。又把message放到文本框后边,加入到视图层,实现数据的双向绑定。

我们可以操作他。

我们也可以用属性绑定来实现性别选择
  1. <body>
  2. <div id="app">
  3.   选择性别:
  4.   <input type="radio" v-model="sex" value="女" checked>女
  5.   <input type="radio" v-model="sex" value="男">男</br>
  6.   {{sex}}
  7. </div>
  8. <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
  9. <script>
  10.   var vm=new Vue({
  11.     el:"#app",
  12.     data:{
  13.       message:"123",
  14.       sex:''
  15.     }
  16.   })
  17. </script>
  18. </body>
复制代码


  1. <body>
  2. <div id="app">
  3.   请选择:
  4.   <select v-model="value">
  5.     <option disabled>--请选择--</option>
  6.     <option>A</option>
  7.     <option>B</option>
  8.     <option>C</option>
  9.   </select>
  10.   {{value}}
  11. </div>
  12. <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
  13. <script>
  14.   var vm=new Vue({
  15.     el:"#app",
  16.     data:{
  17.       value:''
  18.     }
  19.   })
  20. </script>
  21. </body>
复制代码


注意:v-model会忽略全部表单元素的value、selected、checked的初始值而总是将vue实例的数据作为数据泉源。你应该通过JavaScript在组件的数据库中选项中声明初始值!
对于ios用户无法选中第一个选项所以第一个选项要设置为无法选中。
Vue组件(component)

组件允许我们将 UI 分别为独立的、可重用的部门,并且可以对每个部门进行单独的思索。在现实应用中,组件经常被构造成一个层层嵌套的树状结构:

这是官网上的图。
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.   <meta charset="UTF-8">
  5.   <title>Title</title>
  6. </head>
  7. <body>
  8. <div id="app">
  9.   <test v-for="item in items" v-bind:pojo="item"></test>
  10. </div>
  11. <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
  12. <script type="text/javascript">
  13.   Vue.component("test",{
  14.     props: ['pojo'],
  15.     template: '<li>{{pojo}}</li>'
  16.   });
  17.   var vm= new Vue({
  18.     el:"#app",
  19.     data:{
  20.       items: ["吃饭","睡觉","上厕所"]
  21.     }
  22.   });
  23. </script>
  24. </body>
  25. </html>
复制代码

解释:
v-for=“item in items”:遍历Vue实例中界说的名为items的数组,并创建划一数量的组件
v-bind:panh=“item”:将遍历的item项绑定到组件中props界说名为item属性上;= 号左边的panh为props界说的属性名,右边的为item in items 中遍历的item项的值

网络通讯

我们在前面的spingMVC中学习了jQuery.ajax它可以完成异步通讯,现在学个新的
Axios 异步通讯

Axios是一个开源的可以用在欣赏器端和Node JS的异步通讯框架, 她的主要作用就是实现AJAX异步通讯,其功能特点如下:
GitHub:https://github.com/axios/axios
中文文档:http://www.axios-js.com/

mounted钩子

前后端分离,所以我们要先用一个勾子把前端给的数据钩下来,再把它放到我们的模板里面,我们通过访问模板来映射到视图层
起首写一个json文件
  1. {
  2.   "name": "康王博客",
  3.   "url": "https://blog.csdn.net/K1763540?type=blog",
  4.   "page": 1,
  5.   "isNonProfit": true,
  6.   "address": {
  7.     "street": "天安门",
  8.     "city": "北京",
  9.     "country": "中国"
  10.   },
  11.   "links": [
  12.     {
  13.       "name": "CSDN",
  14.       "url": "https://www.baidu.com"
  15.     },
  16.     {
  17.       "name": "test",
  18.       "url": "https://www.baidu.com"
  19.     },
  20.     {
  21.       "name": "test1",
  22.       "url": "https://www.baidu.com"
  23.     }
  24.   ]
  25. }
复制代码
再用一个钩子把数据钩下来。
  1. <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
  2. <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
  3. <script type="text/javascript">
  4.   var vm = new Vue({
  5.     el:"#app",
  6.     mounted(){
  7.       axios.get('./exp_07.json').then(response=>(console.log(response.data)));
  8.     }
  9.   });
  10. </script>
复制代码

在这里成功钩到了这个json文件。下一步就是把他套在模板里面
  1. <script type="text/javascript">
  2.   var vm = new Vue({
  3.     el:"#app",
  4.     data(){
  5.         return{
  6.           info:{
  7.             name: null,
  8.             address: {
  9.               street: null,
  10.               city: null,
  11.               country: null,
  12.               },
  13.               link:[]
  14.             }
  15.           }
  16.         },
  17.     mounted(){
  18.       axios.get('./exp_07.json').then(response=>(console.log(response.data)));
  19.     }
  20.   });
  21. </script>
复制代码
这里改变返回值把数据返回到模板中。
  1. mounted(){
  2.   axios.get('./exp_07.json').then(response=>(this.info=response.data());
  3. }
复制代码
  1. <html lang="en">
  2. <body>
  3. <div id="app">
  4.   {{info.name}}
  5.   {{info.address}}
  6. </div>
  7. <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
  8. <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
  9. <script type="text/javascript">
  10.   var vm = new Vue({
  11.     el:"#app",
  12.     data(){
  13.         return{
  14.           info:{
  15.             name: null,
  16.             address: {
  17.               street: null,
  18.               city: null,
  19.               country: null,
  20.               },
  21.               link:[]
  22.             }
  23.           }
  24.         },
  25.     mounted(){
  26.       axios.get('./exp_07.json').then(response=>(this.info=response.data));
  27.     }
  28.   });
  29. </script>
  30. </body>
  31. </html>
复制代码


这样我们就把json的信息渲染到了页面上。但是刚开始没有渲染到的时间会有一个框架,就是上面的那个。这样很轻易让人以为走错了页面,我们对他做一些改进。
  1. <head>
  2.     <meta charset="UTF-8">
  3.     <title>Title</title>
  4.   <style>
  5.     [v-cloak]{
  6.       display: none;
  7.     }
  8.   </style>
  9. </head>
  10. <body>
  11. <div id="app" v-cloak>
  12.   {{info.name}}
  13.   {{info.address}}
  14. </div>
复制代码
我们对它的样式做一些修改使他在没有获取到json时先不显示。
在这里要注意超链接要使用v-bind绑定一下
  1. <a v-bind:href="info.url">超链接</a>
复制代码
盘算属性

盘算属性的重点突出在属性两个字上(属性是名词),起首它是个属性其次这个属性有盘算的能力(盘算是动词),这里的盘算就是个函数;简单点说,它就是一个能够将盘算结果缓存起来的属性(将举动转化成了静态的属性),仅此而已;可以想象为缓存。
  1. <body>
  2. <div id="app">
  3.   getTime1:{{getTime1()}}</br>
  4.   getTime2:{{getTime2}}
  5. </div>
  6. <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
  7. <script>
  8.   var vm=new Vue({
  9.     el:"#app",
  10.     data:{
  11.       message:"hello world"
  12.     },
  13.     methods:{
  14.       getTime1: function () {
  15.         return Date.now();
  16.       }
  17.     },
  18.     computed:{
  19.       getTime2: function () {
  20.         return Date.now();
  21.       }
  22.     }
  23.   })
  24. </script>
  25. </body>
复制代码
结果:

表面上是没有区别的,我们在刷新的时间他们也是同步刷新,但是

我们对time1也就是methods的方法操作时他后面带有括号,说明他是一个方法,而getTime2并不会刷新,代表他只是一个属性。
这样在运行时可以为我们提升许多效率,有助于高并发;
methods和computed方法名不能重名;methods的优先级高
内容并发

在Vue.js中我们使用 元素作为承载分发内容的出口,官方称其为solt,这里我们称它为插槽,它可以应用在组合组件的场景中;
在某些场景中,我们大概想要为子组件传递一些模板片断,让子组件在它们的组件中渲染这些片断。
<slot> 元素是一个插槽出口 (slot outlet),标示了父元素提供的插槽内容 (slot content) 将在那边被渲染。

此图源自官方文档插槽 Slots | Vue.js
  1. <div id="app">
  2.     <h2>日程</h2>
  3.     <ul>
  4.         <li>吃饭</li>
  5.         <li>睡觉</li>
  6.         <li>打喷嚏</li>
  7.     </ul>
  8. </div>
复制代码

写出来这样一个程序,我们有一些网站开发履历的都知道,我们许多时间书单里的内容都是需要从后端传递的;直接写死是不符合我们的意愿的,所以我们要加入插槽,动态的改变标签里面的数据。
第一把把这个大的div抽象成一个组件
  1. Vue.component("app_div",{
  2.         template:
  3.             '<div>' +
  4.                 '<slot></slot>'+
  5.                 '<ul>' +
  6.                     '<slot></slot>'+
  7.                 '</ul>'+
  8.             '</div>'
  9.     });
复制代码
也可以用\来代更换行
  1. Vue.component("app_div",{
  2.     template:
  3.         '<div>\
  4.             <slot></slot>\
  5.             <ul>\
  6.                 <slot></slot>\
  7.             </ul>\
  8.         </div>'
  9. });
复制代码
我们这样几把他的标题和内容都抽象成了两个插槽,这样我们就可以动态的插入我们的数据。
我们把里面的内容也抽象成组件
  1. Vue.component("app_title",{
  2.         template:
  3.         '<h2>日程</h2>'
  4.     })
  5.     Vue.component("app_items",{
  6.         template:
  7.             '<li>吃饭</li>'
  8.     })
  9.     var vm=new Vue({
  10.         el: "#app",
  11.     });
复制代码
把它茶人
  1. <body>
  2. <div id="app">
  3.     <app_div>
  4.         <app_title></app_title>
  5.         <app_items></app_items>
  6.     </app_div>
  7. </div>
  8. </body>
复制代码
这种插入方式不对,但是是一个简单的插入操作,为的是让我们感受一下这个插入插槽的操作。

下面我们对他进行一些升级
起首把他们插到正确的位置,通过name属性来绑定插入的组件。
起首在组件中绑定
  1. Vue.component("app_div",{
  2.         template:
  3.             '<div>\
  4.                 <slot name="app_title"></slot>\
  5.                 <ul>\
  6.                     <slot name="app_items"></slot>\
  7.                 </ul>\
  8.             </div>'
  9.     });
复制代码
然后在视图层绑定视图层要绑定模板也要绑定命据
模板方面
  1. <app_div>
  2.     <app_title slot="app_title"></app_title>
  3.     <app_items slot="app_items"></app_items>
  4. </app_div>
复制代码
数据方面
因为我们要在里面添加元素,所以先把组件里面的信息挖空,我们再通过v-bind来绑定data里面的数据
  1. Vue.component("app_title",{
  2.         props:['title'],
  3.         template:
  4.         '<h2>{{title}}</h2>'
  5.     })
  6.     Vue.component("app_items",{
  7.         props: ['item'],
  8.         template:
  9.             '<li>{{item}}</li>'
  10.     })
复制代码
  1. <div id="app">
  2.     <app_div>
  3.         <app_title slot="app_title" :title="title"></app_title>
  4.         <app_items slot="app_items"></app_items>
  5.     </app_div>
  6. </div>
复制代码
在下面的data里面添加title,就成了。

我们的大标题就插进来了,下面把目录里面的东西遍历出来。
  1. <app_div>
  2.     <app_title slot="app_title" :title="title"></app_title>
  3.     <app_items slot="app_items" v-for="item in Items" v-bind:item="item"></app_items>
  4. </app_div>
复制代码
其实很简单就是用for循环来遍历data中Items的数据然后把遍历得到的item赋值给app_items组件的item属性;

末了我们就得到了这样一个看不懂的视图层,但是我们真正的关注到了热门,小题目。
自界说变乱

本日我们要办理的题目说起来其实不难就是删除标签。

简单来说就是这样,但是我们的数据是在Vue对象的data里面存储的,但是表单界说在了组件当中,所以要办理的题目就是在组件中调用一个方法来删除Vue对象中的信息;
对组件增长一个methods里面界说一个remove变乱。在每个信息后面添加一个按钮实验调用组件内部界说的变乱。
  1. Vue.component("app_items",{
  2.         props: ['item'],
  3.         template: '<li>{{item}} <button @click="remove">删除</button></li>',/*@是v-on的简写,用来绑定事件*/
  4.         methods: {
  5.             remove: function () {
  6.                 alert("尝试删除")
  7.             }
  8.         }
  9.     });
复制代码

固然不能在组件里直接删除Vue对象的数据,但是我们可以在Vue对象中删除Vue的data数据。那么我们在vue中界说一个删除方法。
这样要借助js中的splice函数
  1. var vm=new Vue({
  2.         el: "#app",
  3.         data:{
  4.             title:'日程安排',
  5.             Items:['吃饭','睡觉','打喷嚏']
  6.         },
  7.         methods:{
  8.             removeItems:function (index) {
  9.                 this.Items.splice(index,1,"已删除");
  10.             }
  11.         }
  12.     });
复制代码
实验一下。

这个变乱就界说成功了,但是我们不能在视图层中调用这个方法,因为视图层的方法是界说在组件上面的。
修改v-for获取index
  1. <app_items slot="app_items" v-for="(item,index) in Items" v-bind:item="item" :index="index"></app_items>
复制代码
在组件中获取index
  1. props: ['item','index'],
  2. template: '<li>{{index}}--{{item}} <button @click="remove">删除</button></li>',
复制代码

成功获取到index;在视图层绑定Vue对象中的方法;
  1. <app_items slot="app_items" v-for="(item,index) in Items"
  2.                    v-bind:item="item" :index="index"
  3.                    v-on:remove="removeItems(index)"
  4.         ></app_items>
复制代码
此时就涉及到参数传递与变乱分发了,Vue为我们提供了自界说变乱的功能很好的帮助我们办理了这个题目;使用this.                                   e                         m                         i                         t                         (                         ‘自界说变乱名’                         ,                         参数                         )                         。                         t                         h                         i                         s                         .                              emit(‘自界说变乱名’,参数)。this.                  emit(‘自界说变乱名’,参数)。this.emit(‘自界说变乱名’,参数)在当前组件触发一个自界说变乱。任何额外的参数都会传递给变乱监听器的回调函数。
  1. Vue.component("app_items",{
  2.         props: ['item','index'],
  3.         template: '<li>{{index}}--{{item}} <button @click="remove">删除</button></li>',
  4.         methods: {
  5.             remove: function (index) {
  6.                 this.$emit('remove',index);
  7.             }
  8.         }
  9.     });
复制代码

终于实现了这个删除功能。我们来分析一下这个变乱分发;

自此我们学习了Vue的根本语法如v-on和v-for等。还有网络通讯axios,末了学习了根本的组件和插槽还有自界说变乱分发,就可以做一个简单的单页面应用了,美中不敷的就是现在我们还没有学习请求转发和重定向之类的操作。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4