详解VUE自定义组件中用.sync修饰符与v-model的区别


Posted in Javascript onJune 26, 2018

.sync修饰组件

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>vue-03</title>
  <!-- 引入Vue -->
  <link href="https://cdn.bootcss.com/bootstrap/4.1.1/css/bootstrap.min.css" rel="external nofollow" rel="external nofollow" rel="stylesheet">
  <script src="https://cdn.bootcss.com/vue/2.5.16/vue.js"></script>
</head>

<body>

  <div class="container" style="margin-top: 12px;">
    <div id="demo" class="row">
      {{ say }}
      <br />
      <my-input :value.sync="say"></my-input>
    </div>
  </div>


  <script>
    new Vue({
      el: '#demo',
      data: {
        say: "123"
      },
      components: {
        "my-input": {
          props: ['value'],
          template: "<div><input v-bind:value='value' v-on:input='change1' />{{value}}</div>",
          watch: {
            value: function(newValue, oldValue) {
              alert('子组件value新旧值' + newValue + '/' + oldValue);
              //this.$emit('update:value', newValue)
            }

          },
          methods: {
            change1: function(e) {
              var v = e.target.value
              this.$emit('update:value', v)
            },

          }
        }
      },
      watch: {
        say: function(n, o) {
          alert('父组件新旧值' + n + '-' + o)
        }
      },
      methods: {

      }
    })
  </script>
</body>

v-model修饰组件

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>vue-10</title>
  <!-- 引入Vue -->
  <link href="https://cdn.bootcss.com/bootstrap/4.1.1/css/bootstrap.min.css" rel="external nofollow" rel="external nofollow" rel="stylesheet">
  <script src="https://cdn.bootcss.com/vue/2.5.16/vue.js"></script>
</head>

<body>

  <div class="container" style="margin-top: 12px;">
    <div id="demo" class="row">
      {{ say }}
      <br />
      <my-input v-model="say"></my-input>
    </div>
  </div>


  <script>
    new Vue({
      el: '#demo',
      data: {
        say: "123"
      },
      components: {
        "my-input": {
          props: ['value'],
          template: "<div><input v-bind:value='value' v-on:input='change' />{{value}}</div>",
          watch: {
            value: function(newValue, oldValue) {
              alert('子组件value新旧值' + newValue + '/' + oldValue);
              //this.$emit('update:value', newValue)
            }

          },
          methods: {
            change: function(e) {
              this.$emit('input', e.target.value)
            }
          }
        }
      }
    })
  </script>
</body>

区别只能自己慢慢体会,个人感觉 .sync用法灵活,而v-model只能接受prop名为为value的值.

两者都需要手动触发$emit方法.

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

Javascript 相关文章推荐
fireworks菜单生成器mm_menu.js在 IE 7.0 显示问题的解决方法
Oct 20 Javascript
javascript内存管理详细解析
Nov 11 Javascript
Node.js巧妙实现Web应用代码热更新
Oct 22 Javascript
基于JavaScript实现Json数据根据某个字段进行排序
Nov 24 Javascript
原生js实现数字字母混合验证码的简单实例
Dec 10 Javascript
jQuery toggle 代替方法
Mar 22 Javascript
jQuery实现的分页功能示例
Jan 22 Javascript
Javascript基础回顾之(二) js作用域
Jan 31 Javascript
整理关于Bootstrap警示框的慕课笔记
Mar 29 Javascript
利用vue组件自定义v-model实现一个Tab组件方法示例
Dec 06 Javascript
用element的upload组件实现多图片上传和压缩的示例代码
Feb 12 Javascript
一些手写JavaScript常用的函数汇总
Apr 16 Javascript
jQuery实现ajax回调函数带入参数的方法示例
Jun 26 #jQuery
在vue中使用公共过滤器filter的方法
Jun 26 #Javascript
Vue不能检测到Object/Array更新的情况的解决
Jun 26 #Javascript
vue中element-ui表格缩略图悬浮放大功能的实例代码
Jun 26 #Javascript
Vue动态控制input的disabled属性的方法
Jun 26 #Javascript
利用Decorator如何控制Koa路由详解
Jun 26 #Javascript
vue实现点击关注后及时更新列表功能
Jun 26 #Javascript
You might like
深入PHP数据缓存的使用说明
2013/05/10 PHP
file_get_contents(&quot;php://input&quot;, &quot;r&quot;)实例介绍
2013/07/01 PHP
PHP中获取时间的下一周下个月的方法
2014/03/18 PHP
php列出mysql表所有行和列的方法
2015/03/13 PHP
php实现网站文件批量压缩下载功能
2015/10/28 PHP
php魔法函数与魔法常量使用介绍
2017/07/23 PHP
php实现将数据做成json的格式给前端使用
2018/08/21 PHP
XRegExp 0.2: Now With Named Capture
2007/11/30 Javascript
利用Ext Js生成动态树实例代码
2008/09/08 Javascript
javascript学习笔记(十二) RegExp类型介绍
2012/06/20 Javascript
js中substr,substring,indexOf,lastIndexOf的用法小结
2013/12/27 Javascript
javascript获取浏览器类型和版本的方法(js获取浏览器版本)
2014/03/13 Javascript
JavaScript实现的图像模糊算法代码分享
2014/04/22 Javascript
javascript实现window.print()去除页眉页脚
2014/12/30 Javascript
JavaScript利用HTML DOM进行文档操作的方法
2016/03/28 Javascript
Bootstrap实现弹性搜索框
2016/07/11 Javascript
使用原生的javascript来实现轮播图
2017/02/24 Javascript
AngualrJs清除定时器遇到的坑
2017/10/13 Javascript
小程序二次贝塞尔曲线实现购物车商品曲线飞入效果
2019/01/07 Javascript
vue 项目接口管理的实现
2019/01/17 Javascript
搭建Vue从Vue-cli到router路由护卫的实现
2019/11/14 Javascript
原生js实现二级联动菜单
2019/11/27 Javascript
JS Thunk 函数的含义和用法实例总结
2020/04/08 Javascript
iview实现图片上传功能
2020/06/29 Javascript
[01:05:30]VP vs TNC 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
[06:07]DOTA2-DPC中国联赛 正赛 Ehome vs VG 选手采访
2021/03/11 DOTA
Python中time模块与datetime模块在使用中的不同之处
2015/11/24 Python
python代码 if not x: 和 if x is not None: 和 if not x is None:使用介绍
2016/09/21 Python
Python二叉树定义与遍历方法实例分析
2018/05/25 Python
django 获取字段最大值,最新的记录操作
2020/08/09 Python
pycharm中如何自定义设置通过“ctrl+滚轮”进行放大和缩小实现方法
2020/09/16 Python
打造经典复古风格的品牌:Alice + Olivia(爱丽丝+奥利维亚)
2016/09/07 全球购物
后备干部培训方案
2014/05/22 职场文书
2014年教研员工作总结
2014/12/23 职场文书
摩登时代观后感
2015/06/03 职场文书
详解nginx进程锁的实现
2021/06/14 Servers