狂神 Vue 自定义内容分发

news/2024/7/19 16:39:09 标签: vue, js, javascript

自定义内容分发

如何在slot组件插槽的基础上实现数据操作

因为组件与Vue实例传递数据是通过v-bind和props,当前组件可以绑定当前组件中的事件,但是不能直接绑定到vue实例中的事件,但是要操作vue中的data必须要通过Vue实例中的方法删除,通过自定义事件就能调用到绑定的事件,就可以绑定到Vue实例的事件

  • <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    
    <div id="vue">
        <todo>
            <todo-title slot="todo-title" v-bind:title="title"></todo-title>
            <todo-items slot="todo-items" v-for="(item,index) in todoItems"
                        v-bind:item="item" v-bind:index="index" v-on:removeDefined="removeItems(index)" :key="index"></todo-items>
        </todo>
    
    </div>
    
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js">javascript"></script>
    
    <script >javascript">
        Vue.component("todo",{
            template:'\
            <div>\
                <slot name="todo-title"></slot>\
                <ul>\
                    <slot name="todo-items"></slot>\
                </ul>\
            </div>'
        });
        Vue.component("todo-title",{
           props:["title"],
           template: "<p>{{title}}</p>"
        });
        Vue.component("todo-items",{
            props:["item","index"],
            /*@是v-on的简写 */
            template: "<li>{{index}}------{{item}}<button @click='remove'>删除</button></li>",
            methods:{
                remove: function (index) {
                    /*这里绑定的事件还得是全小写*/
                    /*所以自定义事件的时候干脆写成小写就行*/
                    this.$emit("removedefined", index);
                }
            }
        });
        var vm = new Vue({
            el:'#vue',
            data:{
                title:"haoyun",
                todoItems:["spring","springMVC","mybatis"],
            },
            methods:{
                removeItems:function (index) {
                    console.log("删除了"+this.todoItems[index]+"ok");
                    this.todoItems.splice(index,1);
                }
            }
        });
    </script>
    </body>
    </html>
    
  • image-20200906080247322

  • (0)通过指令将实例中的数据传递进组件,组件中使用props接收

  • (1)v-on监听事件,单击事件,调用组件内的remove方法

  • (2)定义的remove方法传入一个index

  • (3)通过emit绑定自定义事件removeDefined

  • (4)自定义事件绑定到Vue实例的removeItems方法

  • (5)执行删除splice

image-20200906081825637

  • 组件中的方法绑定自定事件,由前端的自定义事件绑定Vue实例中的方法,相当于绕了一圈,用Vue实例中的方法去删除Vue中的数据

现在所学Vue基础语法,已经可以做一个Vue的单页面应用了

实际开发要基于NodeJS,实际开发采用vue-cli脚手架开发,vue-router路由,vuex做状态管理,Vue UI界面一般使用ElementUI(饿了么出品),或者ICE(阿里巴巴出品),来搭建前端项目


http://www.niftyadmin.cn/n/1699152.html

相关文章

容错处理 负载均衡_什么是“备份、容灾、集群、负载均衡”,今天我终于懂了!!!...

关于容灾、备份、集群、负载均衡这类概念&#xff0c;很多朋友都容易混淆&#xff0c;到底它们之间有什么区别&#xff1f;今天小编我就给大家分别介绍一下&#xff0c;让大家有个深刻的理解 &#xff01;一、备份概念的理解"备份"只是将数据COPY一份&#xff0c;在其…

狂神 Vue 第一个vue-cli项目

第一个vue-cli项目 vue-cli提供一个脚手架&#xff0c;用于快速生成一个vue项目模板 预先定义好的目录结构以及基础代码&#xff0c;好比创建maven项目可以选择创建骨架项目&#xff0c;能提高开发效率 需要环境 Node.js:https://nodejs.org/en/Git:https://git-scm.com/do…

安装Valet记录,配置全局环境变量。

1.安装 Homebrew 软件包管理工具&#xff0c;如果已经安装&#xff0c;可以跳过此步骤 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 2.更新 Homebrew 到最新版本 brew update 3.使用 Homebrew 安装 PHP 7.…

紘康单片机_紘康科技推出单片机实现自动开机(AUTO RUN)应用

纮康科技(HYCON Technology),创新的模拟IC解决方案供应商,推出一系列新型高集成度、低功耗的单片机.内建24位高分辨率模数转换器,有效位数可达21位,最小讯号分辨率为100nVrms,性能比同类产品更具竞争力.此外,HY11P系列产品除了具有低功耗的应用设计还兼具了数据转换速度近1KHz的…

狂神 Vue Webpack

Webpack 是一个现代化的JavaScript应用程序的静态模块打包器&#xff08;module bundler&#xff09;&#xff0c;会递归的构建依赖关系图&#xff08;dependency graph&#xff09; 浏览器逐渐进化到WebApp模式&#xff0c;通常是一个SPA&#xff08;单页面应用&#xff09;…

装linux系统为什么会黑屏_Ubuntu安装时出现黑屏问题的解决

Ubuntu v14.04安装时黑屏处理问题描述&#xff1a;Ubuntu使用光盘/USB安装时&#xff0c;出现"install ubuntu/ try ubuntu without installation"选择&#xff0c;但是Enter安装时&#xff0c;显示器显示没有信息&#xff0c;进行休眠原因分析&#xff1a;由于ubunt…

建立tensor_叶子节点和tensor的requires_grad参数

在学习pytorch的计算图和自动求导机制时&#xff0c;我们要想在心中建立一个“计算过程的图像”&#xff0c;需要深入了解其中的每个细节&#xff0c;这次主要说一下tensor的requires_grad参数。无论如何定义计算过程、如何定义计算图&#xff0c;要谨记我们的核心目的是为了计…

android studio打包apk_H5的优劣势,想要打包成为Android的apk包,需要注意哪些方面呢?...

H5的优势&#xff1a;1.跨平台&#xff0c;开发者无需太多的适配工作&#xff0c;用户无需下载&#xff0c;打开一个网址即可&#xff0c;就能访问了。2.开发简单&#xff0c;开发成本低&#xff0c;入门门槛低&#xff0c;周期短&#xff0c;给小团队更多的机会。3.传播作用好…