vue实现从外部修改组件内部的变量的值


Posted in Javascript onJuly 30, 2020

1、首先是如何给你定义的变量拿到数据:

这里我自己用的是vuex:

首先在你项目的src文件夹下创建这么一个目录:

vue实现从外部修改组件内部的变量的值

之后就要在index.js中将homedatas.js(拿数据的js)共享出去,使页面能拿到数据,

以下是index.js的代码:

vue实现从外部修改组件内部的变量的值

随后就是在homedatas中获取数据了,以下是homedatas.js代码:

vue实现从外部修改组件内部的变量的值

以上就是获取数据的步骤,之后就是在页面中拿到这个获取到的数据:

首当其冲不可少的就是引用,引用vuex和引用组件:

vue实现从外部修改组件内部的变量的值

之后在页面的jascript中的export default中定义组件,获取数据:

vue实现从外部修改组件内部的变量的值

用这个方式在页面中引用组件,然后再自定义标签中将数据传递给组件:

vue实现从外部修改组件内部的变量的值

2、子组件中获取父组件传递过来的数据:

props中定义属性,这是之前在页面自定义标签中设置的三个属性,分别控制组件中的不同部分,定义每个属性的类型、默认值以及测试函数,注意,测试函数一定要return一个值,不然页面会报错,测试函数的参数就是传递过来的值:

vue实现从外部修改组件内部的变量的值

scrolldatas是一个数组,之后便是循环遍历这个数组中的元素,数组中的值就能展示在页面了,页面元素会随着数组元素的改变而改变:

vue实现从外部修改组件内部的变量的值

之后就是其他两个变量怎么在组建中引用了:

首先我要在测试函数中判断一下,这个传进来的值符合不符合要求,如果不符合,那就不执行测试函数,就是默认值,如果符合要求,执行函数,并在函数中改变默认值,赋值给相应自定义变量:

vue实现从外部修改组件内部的变量的值

之后就是调用函数,调用函数中传入参数,这个参数现在的值不是最开始var的初始值,而是后来测试函数中因为符合测试函数的条件后来赋给的值(因为window.onload直到页面加载才会执行):

vue实现从外部修改组件内部的变量的值

之后就要在需要用到这个变量的函数中传一个参数(speed,这个speed的值就是上面changespeed的值):

vue实现从外部修改组件内部的变量的值

所以经过一会说那个的操作,只要在获取数据的地方修改值,页面效果就会随之改变,不需要再组件中修改任何东西:

vue实现从外部修改组件内部的变量的值

补充知识:vue 中如何修改传给component中的属性的值并赋值到template中

记录下来加强记忆

在外面引用option-item-template模板并传值进去,然后在component中对值进行修改然后在赋值到template

下面是外面引用的写法

<option-item-template v-bind:item="item" v-for="optionItem in item.option" v-bind:optionitems="optionItem" v-bind:answer="item.data.answer" v-bind:hassub="changeData.hasSub"></option-item-template>

模板部分的代码

Vue.component('option-item-template', {
  props: ['item', 'optionitems', 'answer','hassub'],
  data: function () {
    return {
      classname: {
        "choose-content": true,
        "stan-answer": false
      }
    }
  },
  watch: {
    hassub: function (newValue, oldValue) {//当hassub属性的值发生改变时会执行下面的代码
      this.changeStanAnswer(newValue, this.answer);
    }
  },
  mounted: function () {//模块编译/挂载之后执行
    this.changeStanAnswer(this.hassub,this.answer);
  },
  methods: {
    changeStanAnswer: function (sub, answer) {
      if (sub && (answer.indexOf(this.optionitems.chooseName) != -1)) {
        this.classname = {
          "choose-content": true,
          "stan-answer": true
        };
      } else {
        this.classname = {
          "choose-content": true,
          "stan-answer": false
        };
      }
    }
  },
  template: '<li class="mui-table-view-cell" v-if="optionitems.selectName || optionitems.selectImage">'
    + '<label :class="classname">'
    + '<input v-if= "item.data.itemType==2" type="checkbox" :name="item.data.tiKuId" v-bind:data-number="item.data.shiJuanNumber" data-type="checkbox" :value="optionitems.chooseName" />'
    + '<input v-else type="radio" :name="item.data.tiKuId" v-bind:data-number="item.data.shiJuanNumber" :value="optionitems.chooseName" data-type="radio" />'
    + '<span class= "choose-btn" >{{optionitems.chooseName}}</span>'
    + '<span class="choose-text">'
    + '{{optionitems.selectName}}'
    + '![在这里插入图片描述]()'
    + '</span>'
    + '</label></li>'
});

由上面的代码所示,根据传进来的值hassub,和optionitems.chooseName的值来拼成最后需要加载的样式及class的值。
hassub的值是会变化的,同时需要根据改变的值加载不同的样式就需要在watch中监听hassub的值,当它的值发生改变时同时也改变class的值。

以上这篇vue实现从外部修改组件内部的变量的值就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js用图作提交按钮或超连接
Mar 26 Javascript
javascript 面向对象编程 聊聊对象的事
Sep 17 Javascript
js 鼠标拖动对象 可让任何div实现拖动效果
Nov 09 Javascript
in.js 一个轻量级的JavaScript颗粒化模块加载和依赖关系管理解决方案
Jul 26 Javascript
jQuery Ajax中的事件详细介绍
Apr 16 Javascript
浅谈window对象的scrollBy()方法
Jul 15 Javascript
jquery实现左右滑动菜单效果代码
Aug 27 Javascript
Bootstrap入门书籍之(一)排版
Feb 17 Javascript
JS实现的打字机效果完整实例
Jun 20 Javascript
bootstrap警告框使用方法解析
Jan 13 Javascript
angular+bootstrap的双向数据绑定实例
Mar 03 Javascript
解决Angular2 router.navigate刷新页面的问题
Aug 31 Javascript
在vue中实现嵌套页面(iframe)
Jul 30 #Javascript
Vue文本模糊匹配功能如何实现
Jul 30 #Javascript
VUE 单页面使用 echart 窗口变化时的用法
Jul 30 #Javascript
解决vue单页面多个组件嵌套监听浏览器窗口变化问题
Jul 30 #Javascript
Vue Render函数原理及代码实例解析
Jul 30 #Javascript
vue - props 声明数组和对象操作
Jul 30 #Javascript
vue项目,代码提交至码云,iconfont的用法说明
Jul 30 #Javascript
You might like
PHP 遍历文件实现代码
2011/05/04 PHP
php生成动态验证码gif图片
2015/10/19 PHP
php+Memcached实现简单留言板功能示例
2017/02/15 PHP
PHP实现的最大正向匹配算法示例
2017/12/19 PHP
php 中的信号处理操作实例详解
2020/03/04 PHP
Javascript 实用小技巧
2010/04/07 Javascript
非常有用的40款jQuery 插件推荐(系列二)
2011/12/25 Javascript
解析Jquery取得iframe中元素的几种方法
2013/07/04 Javascript
jquery实现动态画圆
2014/12/04 Javascript
灵活的理解JavaScript中的this指向
2016/02/25 Javascript
jQuery树插件zTree使用方法详解
2017/05/02 jQuery
浅谈 Vue v-model指令的实现原理
2017/06/08 Javascript
vue-router 路由基础的详解
2017/10/17 Javascript
JS正则表达式常见用法实例详解
2018/06/19 Javascript
vue与原生app的对接交互的方法(混合开发)
2018/11/28 Javascript
vue如何自动化打包测试环境和正式环境的dist/test文件
2019/06/06 Javascript
VUE注册全局组件和局部组件过程解析
2019/10/10 Javascript
JavaScript 装逼指南(js另类写法)
2020/05/10 Javascript
vue实现多个echarts根据屏幕大小变化而变化实例
2020/07/19 Javascript
原生JS实现相邻月份日历
2020/10/13 Javascript
利用js实现简易红绿灯
2020/10/15 Javascript
[54:25]Ti4 循环赛第三日LGD vs MOUZ
2014/07/12 DOTA
[44:40]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第一场 6.2
2018/06/03 DOTA
Python函数式编程指南(一):函数式编程概述
2015/06/24 Python
python利用paramiko连接远程服务器执行命令的方法
2017/10/16 Python
python文件拆分与重组实例
2018/12/10 Python
通过cmd进入python的实例操作
2019/06/26 Python
巴西最大的家具及装饰用品店:Mobly
2017/10/11 全球购物
Hawes & Curtis官网:英国经典品牌
2019/07/27 全球购物
用C#语言写出与SQLSERVER访问时的具体过程
2013/04/16 面试题
2014年幼儿园国庆主题活动方案
2014/09/16 职场文书
设备技术员岗位职责
2015/04/11 职场文书
书法社团活动总结
2015/05/07 职场文书
《社戏》教学反思
2016/02/22 职场文书
解决Maven项目中 Invalid bound statement 无效的绑定问题
2021/06/15 Java/Android
MongoDB数据库常用的10条操作命令
2021/06/18 MongoDB