vuejs2.0子组件改变父组件的数据实例


Posted in Javascript onMay 10, 2017

在vue2.0之后的版本中,不允许子组件直接改变父组件的数据,在1.0的版本中可以这样操作的,但是往往项目需求需要改变父组件的数据,2.0也是可一个,区别是,当我们把父元素的数据给子组件时,需要传一个对象,子组件通过访问对象中的属性操作数据,下面是演示

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <script type="text/javascript" src="vue.js"></script>  
  <script type="text/javascript">
    window.onload = function(){
      var app = new Vue({
      el:'#box',
      data:{
        myData:{
          info:'父组件信息'
        }
      },
      components:{
        'v-com':{
          props:['data'],
          template:'#tpl',
          methods:{
            change(){
              this.data.info = 'change info'
            }
          }
        }
      }
    })
    }
  </script>
</head>
<body>
  <!-- 子组件改变父组件的数据 -->
  <div id="box">
    <div>
      <p>{{myData.info}}</p>
      <v-com :data ="myData"></v-com>
    </div>
  </div>

  <!-- 模板 -->
  <template id="tpl">
    <div>
      <button @click="change">change</button>
      <p>{{data.info}}</p>
    </div>
  </template>

</body>
</html>

这种是同步改变数据,就是说子组件的数据改变,父组件数据也跟着改变,下面展示非同步的情况

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <script type="text/javascript" src="vue.js"></script>  
  <script type="text/javascript">
    window.onload = function(){
      var app = new Vue({
      el:'#box',
      data:{
        myData:'父组件信息'
      },
      components:{
        'v-com':{
          data() {
            return {
              childData:''
            }
          },
          props:['data'],
          // dom渲染完毕
          mounted(){
            this.childData = this.data
          },
          template:'#tpl',
          methods:{
            change(){
              this.childData = 'change info'
            }
          }
        }
      }
    })
    }
  </script>
</head>
<body>
  <!-- 子组件改变父组件的数据,不同步 -->
  <div id="box">
    <div>
      <p>{{myData}}</p>
      <v-com :data ="myData"></v-com>
    </div>
  </div>

  <!-- 模板 -->
  <template id="tpl">
    <div>
      <button @click="change">change</button>
      <p>{{childData}}</p>
    </div>
  </template>

</body>
</html>

这里巧妙的通过mounted这个方法进行了中转,实现了想要的效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
弹出广告特效代码(一个IP只弹出一次)
May 11 Javascript
JavaScript 验证浏览器是否支持javascript的方法小结
May 17 Javascript
Web开发者必备的12款超赞jQuery插件
Dec 03 Javascript
提高jQuery性能优化的技巧
Aug 03 Javascript
jQuery实现仿百度帖吧头部固定导航效果
Aug 07 Javascript
jQuery ui实现动感的圆角渐变网站导航菜单效果代码
Aug 26 Javascript
javascript伸缩型菜单实现代码
Nov 16 Javascript
js接收并转化Java中的数组对象的方法
Aug 11 Javascript
node.js将MongoDB数据同步到MySQL的步骤
Dec 10 Javascript
详解vue axios用post提交的数据格式
Aug 07 Javascript
ES6中Promise的使用方法实例总结
Feb 18 Javascript
Javascript作用域和作用域链原理解析
Mar 03 Javascript
详解vue.js2.0父组件点击触发子组件方法
May 10 #Javascript
详解vue-router 2.0 常用基础知识点之router-link
May 10 #Javascript
JavaScript使用readAsDataURL读取图像文件
May 10 #Javascript
angular.js指令中的controller、compile与link函数的不同之处
May 10 #Javascript
详解vue-router 2.0 常用基础知识点之导航钩子
May 10 #Javascript
详解vue-router 2.0 常用基础知识点之router.push()
May 10 #Javascript
JavaScript通过filereader接口读取文件
May 10 #Javascript
You might like
建立文件交换功能的脚本(三)
2006/10/09 PHP
PHP4实际应用经验篇(9)
2006/10/09 PHP
eWebEditor v3.8 商业完整版 (PHP)
2006/12/06 PHP
执行、获取远程代码返回:file_get_contents 超时处理的问题详解
2013/06/25 PHP
PHP判断是否为空的几个函数对比
2015/04/21 PHP
Yii2框架视图(View)操作及Layout的使用方法分析
2019/05/27 PHP
jquery+ajax每秒向后台发送请求数据然后返回页面的代码
2011/01/17 Javascript
Jquery动态改变图片IMG的src地址示例
2013/06/25 Javascript
Javascript保存网页为图片借助于html2canvas库实现
2014/09/05 Javascript
jquery实现页面关键词高亮显示的方法
2015/03/12 Javascript
js验证上传图片的方法
2015/05/12 Javascript
BootStrap glyphicons 字体图标实现方法
2016/05/01 Javascript
微信小程序开发之map地图实现教程
2017/06/08 Javascript
基于Node.js模板引擎教程-jade速学与实战1
2017/09/17 Javascript
nodejs Assert中equal(),strictEqual(),deepEqual(),strictDeepEqual()比较
2017/09/18 NodeJs
node文字生成图片的示例代码
2017/10/26 Javascript
JavaScript实现动态添加、移除元素或属性的方法分析
2019/01/03 Javascript
vue移动端实现手机左右滑动入场动画
2020/06/17 Javascript
vue 实现走马灯效果
2019/10/28 Javascript
基于Cesium绘制抛物弧线
2020/11/18 Javascript
[03:40]2014DOTA2国际邀请赛 B神专访:躲箭真的很难
2014/07/13 DOTA
Tensorflow卷积神经网络实例
2018/05/24 Python
python matplotlib:plt.scatter() 大小和颜色参数详解
2020/04/14 Python
Python3+SQLAlchemy+Sqlite3实现ORM教程
2021/02/16 Python
瑞士香水购物网站:Parfumcity.ch
2017/01/14 全球购物
Draper James官网:知名演员瑞茜·威瑟斯彭所创品牌
2017/10/25 全球购物
澳大利亚香水在线:Price Rite Mart
2017/12/28 全球购物
澳大利亚制造的蜡烛和扩散器:Glasshouse Fragrances
2018/05/20 全球购物
加拿大大码女装购物网站:Penningtons
2020/12/26 全球购物
PHP开发工程师面试问题集锦
2012/11/01 面试题
社区学习十八大感想
2014/01/22 职场文书
八年级美术教学反思
2014/02/02 职场文书
试用期自我鉴定范文
2014/03/20 职场文书
元旦趣味活动方案
2014/08/22 职场文书
详解Python如何批量采集京东商品数据流程
2022/01/22 Python
十大公认最好看的动漫:《咒术回战》在榜,《钢之炼金术师》第一
2022/03/18 日漫