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 相关文章推荐
基于jquery实现控制经纬度显示地图与卫星
May 20 Javascript
从数据库读取数据后将其输出成html标签的三种方法
Oct 13 Javascript
javascript使用for循环批量注册的事件不能正确获取索引值的解决方法
Dec 20 Javascript
理解和运用JavaScript的闭包机制
Aug 13 Javascript
jQuery图片轮播滚动切换代码分享
Apr 20 Javascript
Bootstrap Search Suggest使用例子
Dec 21 Javascript
js基于FileSaver.js 浏览器导出Excel文件的示例
Aug 15 Javascript
vue中使用微信公众号js-sdk踩坑记录
Mar 29 Javascript
Vue 列表上下过渡效果的实例代码
Jun 25 Javascript
详解基于Vue的支持数据双向绑定的select组件
Sep 02 Javascript
在Vue.js中使用TypeScript的方法
Mar 19 Javascript
js前端传json后台接收‘‘被转为quot的问题解决
Nov 12 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发明人谈MVC和网站设计架构 貌似他不支持php用mvc
2011/06/04 PHP
mysqli_set_charset和SET NAMES使用抉择及优劣分析
2013/01/13 PHP
php结合ajax实现赞、顶、踩功能实例
2014/05/12 PHP
Yii使用ajax验证显示错误messagebox的解决方法
2014/12/03 PHP
php在数据库抽象层简单使用PDO的方法
2015/11/03 PHP
PHP使用mkdir创建多级目录的方法
2015/12/22 PHP
ThinkPHP3.2.2实现持久登录(记住我)功能的方法
2016/05/16 PHP
yii2.0整合阿里云oss删除单个文件的方法
2017/09/19 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
2017/11/14 PHP
Vue.JS入门教程之列表渲染
2016/12/01 Javascript
React简单介绍
2017/05/24 Javascript
阿里大于短信验证码node koa2的实现代码(最新)
2017/09/07 Javascript
微信小程序中button组件的边框设置的实例详解
2017/09/27 Javascript
React Native 自定义下拉刷新上拉加载的列表的示例
2018/03/01 Javascript
vue路由跳转传参数的方法
2019/05/06 Javascript
js中复选框的取值及赋值示例详解
2020/10/18 Javascript
原生JavaScript实现幻灯片效果
2021/02/19 Javascript
python中的__init__ 、__new__、__call__小结
2014/04/25 Python
python 中的divmod数字处理函数浅析
2017/10/17 Python
python3.6+opencv3.4实现鼠标交互查看图片像素
2018/02/26 Python
Python基于Flask框架配置依赖包信息的项目迁移部署
2018/03/02 Python
Python中新式类与经典类的区别详析
2019/07/10 Python
Python装饰器使用你可能不知道的几种姿势
2019/10/25 Python
在python中利用pycharm自定义代码块教程(三步搞定)
2020/04/15 Python
一套C#面试题
2013/10/09 面试题
北京麒麟网信息技术有限公司网络游戏测试面试题
2013/09/28 面试题
鼓励运动员的广播稿
2014/02/08 职场文书
股权转让意向书
2014/04/01 职场文书
民事诉讼授权委托书范文
2014/08/02 职场文书
自查自纠工作总结
2014/10/15 职场文书
营销计划书范文
2015/01/17 职场文书
中学生自我评价2015
2015/03/03 职场文书
超市督导岗位职责
2015/04/10 职场文书
七年级上册生物的课件
2019/08/07 职场文书
Python基础之hashlib模块详解
2021/05/06 Python
Java基于字符界面的简易收银台
2021/06/26 Java/Android