首页 > 其他分享 >vue组件

vue组件

时间:2023-04-21 20:48:44浏览次数:43  
标签:count vue 自定义 标签 组件 data

vue组件实际上就是自定义标签

组件是vue可重复使用的实例

也就是说,当你定义好一个组件之后,你可以将其当做一个html的标签使用

<div id="app">
    <br>
    <qinjiang></qinjiang>
    <br>
</div>
<div id="buttonnew">
    <newbutton></newbutton>
</div>
    Vue.component('qinjiang',{
        template:'    <span title="66">\n        鼠标悬停查看信息\n    </span>',

    })
    Vue.component('newbutton',{
        data:function (){
            return{
                count:0
            }
        },
        template: '<button v-on:click="count++">you clicked me {{count}} time</button>'
    })
    new Vue({
        el:"#buttonnew"
    })
  new Vue({
   el:"#app"
  })
 

结果

你可以将组件进行任意次数的复用:

注意当点击按钮时,每个组件都会各自独立维护它的 count。因为你每用一次组件,就会有一个它的新实例被创建。

 

data 必须是一个函数

当我们定义这个 <button-counter> 组件时,你可能会发现它的 data 并不是像这样直接提供一个对象:

data: {
  count: 0
}

取而代之的是,一个组件的 data 选项必须是一个函数,因此每个实例可以维护一份被返回对象的独立的拷贝:

data: function () {
  return {
    count: 0
  }
}

如果 Vue 没有这条规则,点击一个按钮就可能会像如下代码一样影响到其它所有实例

关于如何在自定义的组建中,调取已有vue对象属性值的方法

以下是代码显示

<div id="app">
    <br>
    <qinjiang v-for="(value,name,index) in message" v-bind:zihan="value" v-bind:name="name" v-bind:index="index"></qinjiang>
    <br>
</div>
    Vue.component('newbutton', {
        data:function () {
            return{
                count: 0
            }
        },
        template: '<button v-on:click="count +=1">you clicked me {{count}} time</button>'
    })
    new Vue({
        el: "#app",
        data:{
            // items:['狗蛋','猪蛋','钢蛋']
            message:{
                one:'狗蛋',
                two:'猪蛋',
                three:'钢蛋',
            }
        }
    })

由于刚开始学,这部分也比较绕脑,现在重新复盘一下

首先,自定义的标签必须要在已定义的vue对象中才能被识别

也就是说

当你想要使用自定义标签时,你要在一个已经被定义的vue对象中使用,在上述代码中也就是

<div id="app">以及el: "#app",

其次,从代码中可以看出,自定义标签与vue对象是平级的存在,也就是说,自定义标签无法直接调用vue对象中的属性内容,

因此,我们需要将我们想用的内容绑定到自定义标签上,然后在自定义标签内,接收绑定的数据,从而实现数据调取

以这行代码为例:

<qinjiang v-for="(value,name,index) in message" v-bind:zihan="value" v-bind:name="name" v-bind:index="index"></qinjiang>

 可以看到,我们的原意是用for循环将message的内容遍历出来,因为我们的自定义标签是写在被定义vue的div中的,所以for循环可以读取到message 在从message提取到 value name index数据之后,下面我们要做的便是将这三个数据绑定在自定义标签中,也就是v-bind:zihan="value"等操作了, 将数据绑定到自定义标签之后,数据只能用props进行接收,props是一个数组,可以一次性接收很多数据, 最后将我们的数据写到template模板里,这样自定义标签就能读取到已定义vue对象中的属性了

 

在模板中常用的属性有

data,注意data必须是一个函数

props:用来存放被定义的数据

template:定义的模板

 

标签:count,vue,自定义,标签,组件,data
From: https://www.cnblogs.com/-0112/p/17341667.html

相关文章

  • vue-router解决警告:No match found for location with path "XXXXXXX"
      使用vue-router时,在刷新页面时往往会出现这个警告:    这个问题产生的原因往往是因为vue在启动时,会校验当前页面的路由,而我们使用vue-router时,是在导航守卫中动态添加路由的,因此肯定找不到,而这个时候还没进入守卫,自然就会抛出这个警告了:  1、app.use(router)......
  • Vue:表单双绑、组件
    vue一大精髓就是双向绑定vue.js是一个mvvm框架,即数据的双向绑定,即当数据发生变化时的时候,视图也就发生变化,当视图发生变化时,数据也会同步变化双向绑定是对于UI控件来说的,非UI控件不会涉及到数据的双向绑定以input标签举例<divid="app">输入的文本:<inputtype="text"v-......
  • WebStorm 2023.1 vue文件标签中变量无法识别 Unresolved variable or type
    从老版本WebStorm升级到 WebStorm2023.1之后,打开项目莫名爆红 可能是查询的不对,很多博客指明是依赖的问题,实际修改无效问题出在文件类型指向不对修改为: 问题解决 ......
  • Vite + Vue3 +TS 项目搭建
    安装nvm略安装node略使用Vite创建项目vite3.x文档:https://cn.vitejs.dev/guide/#scaffolding-your-first-vite-project使用NPM:$npmcreatevite@latest使用Yarn:$yarncreatevite使用PNPM:$pnpmcreatevite然后直接进入项目初始化的选择,自定义一些......
  • VUE上传图片
    1<!--2气味照相机,上传图片3-->4<template>5<divclass="main_container">6<divclass="bgimg_box":style="'background-image:url('+bgImg+');'">7<d......
  • 动力节点⑤章 vuex——vue视频笔记
    5Vuex5.1vuex概述vuex是实现数据集中式状态管理的插件。数据由vuex统一管理。其它组件都去使用vuex中的数据。只要有其中一个组件去修改了这个共享的数据,其它组件会同步更新。一定要注意:全局事件总线和vuex插件的区别:全局事件总线关注点:组件和组件之间数据如何传递,一个绑定$......
  • 使用PhantomJS解决VUE项目无法被百度收录
    一、安装PhantomJS安装文章:https://www.cnblogs.com/robots2/p/17340143.html二、编写脚本spider.js//spider.js'usestrict';console.log('=====start=====');//单个资源等待时间,避免资源加载后还需要加载其他资源varresourceWait=500;varresourceWaitTimer;/......
  • vue下拉框选择后不显示值,选其他下拉框后才显示出来
    vue下拉框选择后不显示值,选其他下拉框后才显示出来 vue也太坑了解决方法:为该el-select添加change事件中使用$set来对属性赋值,如下:changeData(val){ this.$set(this.formData,this.formData.id,val.value)}......
  • vue全家桶进阶之路50:Vue3 环境变量+跨域设置实例
    使用.env加后缀的方式来建立某个模式下的环境变量,例如:项目根目录新建两个环境变量文件(development开发环境和production生产环境):.env.development.env.production 在新建的两个环境变量文件中设置相同的环境变量名:VUE_APP_BASE_API环境变量名称必须以"VUE_API_"+名称......
  • DRF的权限组件(源码分析)
    DRF的权限组件(源码分析)1.创建用户表fromdjango.dbimportmodels#Createyourmodelshere.classUserInfo(models.Model):role_choice=((1,'CEO'),(2,'CTO'),(3,'CFO'))role=models.SmallIntegerField(verbose_name='类型&......