vue基础篇---vue组件

vue模块第一篇,因为公司马上要用到这vue开发。早就想好好看看vue了。只有实际工作中用到才会进步最快。vue其他的简单指令就不多讲了,没啥意思,网上一大堆。看w3c就ok。

组件这个我个人感觉坑蛮多的,所以特地记录一下。

 

简单总结一下:

父组件给子组件传值:

父向子可以传属性,方法,和父对象的本身,很简单,需要2步即可。

1,父组件调用子组件的时候 绑定动态属性    <v-header :title="title" :homemsg='msg'  :run="run"  :home="this"></v-header>  分别是属性,方法,父本身

2,在子组件里面通过 props接收父组件传过来的数据   props:['title','homemsg','run','home']   js调用的时候就this.title即可   页面直接{{title}}即可

父组件主动获取子组件的数据和方法

1.调用子组件的时候定义一个ref   <v-header ref="header"></v-header>

2.在父组件里面通过  this.$refs.header.属性  this.$refs.header.方法

子组件主动获取父组件的数据和方法

this.$parent.数据

this.$parent.方法

 非父子组件传值   (利用广播实现的,麻烦,在项目中一般用vuex实现)

1、新建一个js文件   然后引入vue  实例化vue  最后暴露这个实例VueEmit

2、在要广播的地方引入刚才定义的实例

3、通过 VueEmit.$emit('名称','数据')

4、在接收收数据的地方通过 $om接收广播的数据
VueEmit.$on('名称',function(){

})

全局组件

/*全局組件*/Vue.component("to-do",{template:"<li>111</li>"})

这样就声明了一个全局组件,然后你在html中直接引用   <to-do></to-do>  这个你自定义的标签就ok。注意:一定要在你声明的el中引用。

问题1:全局组件如何引用变量呢?

<!--html中引用的全局組件  content这个属性是你自定义的 --><to-do v-for="(item,index) in list" :key="index" :content="item"></to-do>/*全局組件*/Vue.component("to-do",{props:["content"],        // props這個属性来声明接收变量template:"<li>{{content}}</li>"})

 

问题2:子组件和父组件之间如何通信呢?

这里特别强调说明一下,每一个vue实例就是一个组件,每个组件都是vue实例。这里要清楚!!!

也就是说,你自定义一个组件,组件里面也可以也date,methods这类的属性。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="https://cdn.bootcss.com/vue/2.4.2/vue.min.js"></script>
</head>
<body>
<div id="app">
<input type="text" v-model="v1">
<button @click="add">提交</button><!--html中引用的全局組件  content  index 这2个属性是你自定义的  @del 是监听del这个自定义的事件,就执行hadleDelete这个方法--><to-do v-for="(item,index) in list" :key="index" :content="item" :index="index" @del="hadleDelete"></to-do></div></body>
<script type="text/javascript">/*全局組件*/Vue.component("to-do",{props:["content","index"],        // props這個属性来声明接收变量template:"<li @click='click_li'>{{content}}</li>",methods:{click_li:function(){this.$emit("del",this.index)   //意思是点击子组件的li标签的话,会向外发布一条del事件。后面携带的值
      }}})new Vue({el: "#app",data: {v1: "",list: []},methods: {add: function () {this.list.push(this.v1);this.v1 = "";},hadleDelete:function(index){this.list.splice(index,1)   //执行这个方法,告诉父组件 把list里面的数据删掉
      }}})
</script>
</html>

 

要清楚,父组件何如向子组件通信。子组件如何向父组件通信。

 

局部组件

<script type="text/javascript">/*全局組件*/Vue.component("to-do",{template:"<li>111</li>"})/*局部組件*/var xixi={template:"<li>xxxxx</li>"}new Vue({el: "#app",components:{xixi:xixi},data: {v1: "",list: []},methods: {add: function () {this.list.push(this.v1);this.v1 = "";}}})
</script>

 

他和全局组件的区别在于,全局可以直接引用,他不可以,如果想用,必须在自己new Vue({})中声明才可以。然后你在html中直接引用   <xixi></xixi>  这个你自定义的标签就ok

 

在子组件中如何引用父组件的方法

<div id="vue_det"><child content="Dell" @click.native="xx"></child><child content="Mark"></child>
</div>

xx方法写在父组件的methods中。引用的时候用.native即可。 如果子组件本身有方法。会先执行子组件的方法,然后再执行父组件的方法。

 

卡槽

卡槽的作用:平常我们父组件给子组件传值,我们都用自定义属性的方式,然后在子组件中接收,但是,如果我们从父组件中传的值是html这种呢?难道还要这样写么?岂不是很蛋疼?虽然能做到,但是不够美观,而且还得转义。所以,我们需要卡槽这个特性。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>卡槽</title><script src="https://cdn.bootcss.com/vue/2.4.2/vue.min.js"></script>
</head>
<body>
<div id="vue_det"><child><div slot="header">header</div>   <!--header,footer是自定义的名字。方便子组件引用--><div slot="footer">footer</div></child></div>
<script type="text/javascript">Vue.component('child',{template:`<div><slot name="header"></slot>     <h1>主题</h1><slot name="footer"></slot></div>`})var vm = new Vue({el: '#vue_det'})
</script>
</body>
</html>

利用vuex实现不同的组件之间传递数据 

cnpm install vuex --save  安装

在项目中src下创建一个专门的文件夹存放vuex的store

src/store/index.js

import Vue from 'vue'
import Vuex from 'vuex'Vue.use(Vuex)   //使用vuex插件
export default new Vuex.Store({    //创建仓库
  state :{
    city:'北京'
 },
 actions:{
   changeCity(ctx,city){ // ctx 是上下文环境,必须调用commit来实现改变state中的值
     ctx.commit('changeCity',city)
}
}mutations:{
  changeCity(state,city){
    state.city=city
  }
 } })

在main.js中引入

import store from './store'new Vue({el: '#app',router,store,                             /把store加进根元素
  components: { App },template: '<App/>'
})

然后可以在其他组件中引用

{{this.$store.state.city}}

如何改变仓库的值呢?

第一种方法:

在点击事件中添加这样的一句话   ,  意思是触发changeCity事件,将city带过去 ,changeCity这个方法再vuex中写

this.$store.dispatch('changeCity',city)

第二种方法:   直接省略掉actions了,直接调用commit方法也是可以的。

this.$store.commit('changeCity',city)

循环递归组件 

<template><div><divclass="item"v-for="(item, index) of list":key="index"><div class="item-title border-bottom"><span class="item-title-icon"></span>
        {{item.title}}</div><div v-if="item.children" class="item-chilren"><detail-list :list="item.children"></detail-list></div></div></div>
</template><script>
export default {name: 'DetailList',props: {list: Array}
}
</script>

 

转载于:https://www.cnblogs.com/coder-lzh/p/9248142.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/366629.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

volta架构 微型计算机,性能大爆炸 NVIDIA新GPU架构曝光

一年一度的GTC大会目前正在大洋彼岸的美国加利福尼亚州圣何塞市召开&#xff0c;这是由NVIDIA主办的GPU通用计算技术大会&#xff0c;号称是“图形技术巫师”们的聚会。几乎每次GTC大会上NVIDIA都会拿出来些压箱底的东西震场面&#xff0c;这届自然也不会例外。NVIDIA在GTC大会…

Java中的堆栈和队列

我最近一直在研究一些需要堆栈和队列的Java代码。 使用的选择不是立即显而易见的。 有一个Queue接口&#xff0c;但没有明确的具体实现要使用。 还有一个Stack类&#xff0c;但是javadocs指出其他类“应该优先于此类使用”。 那么&#xff0c;您对Java中的堆栈和队列使用哪种实…

有一本书,适合零到十年经验的程序员看

这本书就是《代码大全》。这书名看起来就不想读&#xff1f; 我第一次看到这个书名的时候&#xff0c;心想难道这本书要把所有编程语言都讲一遍吗&#xff1f;但是当我深入阅读这本书之后&#xff0c;简直爱不释手。 这本书太厚了&#xff0c;你看不下去&#xff1f; 是的&a…

西门子数控面板图解_学好四要点让你迅速成为数控机床“操作高手”

当前国内许多刚刚从事数控机床操作人员的分类来说&#xff0c;一部分操作者是&#xff0c;对机械加工非常熟悉&#xff0c;但对于数控机床的编程是比较陌生的&#xff1b;一部分是刚毕业的学生&#xff0c;他们对机械加工知识&#xff0c;数控加工和编程的理论比较熟悉&#xf…

Android Service、IntentService,Service和组件间通信

Service组件 Service 和Activity 一样同为Android 的四大组件之一&#xff0c;并且他们都有各自的生命周期&#xff0c;要想掌握Service 的用法&#xff0c;那就要了解Service 的生命周期有哪些方法&#xff0c;并且生命周期中各个方法回调的时机和作用 什么是service&#xff…

生物计算机科学家,科学家开发细胞计算机 人体就是一台大型计算机

原标题&#xff1a;科学家开发细胞计算机 人体就是一台大型计算机欢迎收看新一期“新奇榜”&#xff0c;新鲜科技、奇闻怪事尽在新奇榜。近日&#xff0c;瑞士研究人员成功制造出了一种功能强大、类似计算机的人体细胞。这种细胞可能被用来帮助监测一个人的健康状况&#xff0c…

休眠中的自然身份证

自然ID是可以唯一标识一个实体的一个或一组属性。 我们最多可以为一个实体定义一个自然ID。 当Hibernate在实体映射文件中看到natural-id标记时&#xff0c;它会自动在构成natural-id的属性上创建唯一且非空的约束。 首先&#xff0c;让我们看一下简单和复合自然ID的示例。 简…

k8s源码分析 pdf_rook源码分析之一:rook架构解析

rook简介Rook是一款云原生环境下的开源分布式存储编排系统&#xff0c;目前支持 Ceph、NFS、Edegefs、Cassandra、CockroachDB等存储系统。它实现了一个自动管理的、自动扩容的、自动修复的分布式存储服务。Rook 支持自动部署、启动、配置、分配、扩容/缩容、升级、迁移、灾难恢…

24 python异常机制

1 --------------------捕获多个异常-------------------------------------------2 try:3 pass4 except Exception1 as e:5 raise 6 except Exception2 as e:7 raise 8 except Exception3 as e:9 raise 10 。。。。等等 11 12 ##--- 其实等同于以下&#xf…

.net压缩文件夹

1&#xff0c;引用&#xff1a;using System.IO.Packaging; 2&#xff0c;压缩文件的方法&#xff1a; /// <summary>/// 压缩文件夹到制定的路径/// </summary>/// <param name"folderName">要压缩的文件物理路径</param>/// <param nam…

weex eros框架源码解析

weex eros是基于alibaba weex框架进行二次封装的客户端跨平台开发框架&#xff0c;主要是为前端开发者&#xff08;可以不用熟悉客户端开发)提供的一站式客户端app开发解决方案。官网地址为&#xff1a;https://bmfe.github.io/eros-docs/#/。为了方便前端开发者和客户端开发者…

什么是可重入锁?

在Java 5.0中&#xff0c;增加了一个新功能以增强内部锁定功能&#xff0c;称为可重入锁定。 在此之前&#xff0c;“同步”和“易失性”是实现并发的手段。 public synchronized void doAtomicTransfer(){//enter synchronized block , acquire lock over this object.operat…

多选一的图片和文字

利用 radio 做单选事件&#xff0c;js 兄弟选择 nextSibling 获取邻近的图片对象&#xff0c;然后进行改变 例子&#xff1a; CSS <style type"text/css">input[type"radio"] {display: none;}label{font-size: 16px;}.choose_or{width: 1.2rem;heig…

【每日一题】收集足够苹果的最小花园周长

文章目录 Tag题目来源解题思路方法一&#xff1a;二分枚举答案 写在最后 Tag 【二分枚举答案】【二维网格】【2023-12-24】 题目来源 1954. 收集足够苹果的最小花园周长 解题思路 方法一&#xff1a;二分枚举答案 思路 通过如下过程&#xff0c;我们可以求出边长为 2n 时&…

小数前的0在html不显示,jsp小数显示问题 例如 我在oracle 数据库中查询出来的是 0.01 但是在jsp页面上就显示成 .01 没有前面的0...

满意答案1234junling2013.08.28采纳率&#xff1a;56% 等级&#xff1a;12已帮助&#xff1a;6022人控制保留几位有效小数的js函数//Code CreateBy abandonship 2007.03.12function FormatAfterDotNumber( ValueString, nAfterDotNum ){var ValueString,nAfterDotNum ;var r…

word文档图标变成白纸_word文档图标变为白纸

请不要盗用我的答案&#xff01;&#xff01;一号方案【新P】注意【原创】&#xff1a;1&#xff0e;安全模式下&#xff0c;效果更好&#xff01;2. 以下所要使用的软件&#xff0c;都要安装或升级到最新版本&#xff0c;以保证使用的效果。3. 不杀毒&#xff0c;直接使用以下…

Jira filter subscribe issues

Jira & filter & subscribe & issues https://confluence.atlassian.com/search/?querysubscribeissues&productNameJiraCore&productVersion7.3]https://confluence.atlassian.com/jiracoreserver073/saving-your-search-as-a-filter-861257224.html 转载…

iView 一周年了,同时发布了 2.0 正式版,但这只是开始...

两年前&#xff0c;我开始接触 Vue.js 框架&#xff0c;当时就被它的轻量、组件化和友好的 API 所吸引。之后我将 Vue.js 和 Webpack 技术栈引入我的公司&#xff08;TalkingData&#xff09;可视化团队&#xff0c;并经过一年多的实践&#xff0c;现已成为整个公司的前端开发规…

Hawtio和Apache JClouds

介绍 我最近花了一些时间为Hawtio开发 Apache Jclouds插件。 尽管还有很多待完成的工作&#xff0c;但我无法激动&#xff0c;想分享…… 这个Hawtio到底是什么&#xff1f; 每当我注意到一个很酷的开源项目时&#xff0c;我通常都会订阅邮件列表&#xff0c;以便我可以更好地…

【转】安全加密(一):这些MCU加密方法你都知道吗?

本文导读 随着物联网和边缘计算的出现&#xff0c;五花八门的MCU也被应用其中&#xff0c;如何保证我们的程序安全和知识产权不受侵犯呢&#xff0c;本文我们将对主流MCU的程序加密进行讲解&#xff0c;希望能够帮助你选择最适合自己应用的微处理器。 1. MCU加密 通常所说的MC…