详解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 相关文章推荐
用jquery统计子菜单的条数示例代码
Oct 18 Javascript
js模拟C#中List的简单实例
Mar 06 Javascript
在页面加载完成后通过jquery给多个span赋值
May 21 Javascript
jQuery搜索子元素的方法
Feb 10 Javascript
JS实现点击复选框将按钮或文本框变为灰色不可用的方法
Aug 11 Javascript
jquery分隔Url的param方法(推荐)
May 25 Javascript
解决wx.onMenuShareTimeline出现的问题
Aug 16 Javascript
微信小程序 欢迎页面的制作(源码下载)
Jan 09 Javascript
jQuery插件HighCharts绘制简单2D折线图效果示例【附demo源码】
Mar 21 jQuery
vue动画之点击按钮往上渐渐显示出来的实例
Sep 29 Javascript
JavaScript 反射和属性赋值实例解析
Oct 28 Javascript
viewer.js实现图片预览功能
Jun 24 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 验证码的实现代码
2011/07/17 PHP
laravel 获取某个查询的查询SQL语句方法
2019/10/12 PHP
thinkphp框架表单数组实现图片批量上传功能示例
2020/04/04 PHP
Js与下拉列表处理问题解决
2014/02/13 Javascript
JavaScript数组常用方法
2015/03/02 Javascript
JavaScript实现把rgb颜色转换成16进制颜色的方法
2015/06/01 Javascript
jQuery实现分章节锚点“回到顶部”动画特效代码
2015/10/23 Javascript
jquery实现的V字形显示效果代码
2015/10/27 Javascript
创建自己的jquery表格插件
2015/11/25 Javascript
jQuery中使用animate自定义动画的方法
2016/05/29 Javascript
微信小程序开发之入门实例教程篇
2017/03/07 Javascript
JS库之Particles.js中文开发手册及参数详解
2017/09/13 Javascript
node(koa2) web应用模块介绍详解
2019/03/29 Javascript
JS正则表达式封装与使用操作示例
2019/05/15 Javascript
原生js实现3D轮播图
2020/03/21 Javascript
vue.js自定义组件实现v-model双向数据绑定的示例代码
2020/01/08 Javascript
解决vue+router路由跳转不起作用的一项原因
2020/07/19 Javascript
vue3.0中友好使用antdv示例详解
2021/01/05 Vue.js
[47:52]完美世界DOTA2联赛PWL S2 PXG vs InkIce 第二场 11.26
2020/11/30 DOTA
pycharm 主题theme设置调整仿sublime的方法
2018/05/23 Python
Python实现带参数的用户验证功能装饰器示例
2018/12/14 Python
python使用pandas处理大数据节省内存技巧(推荐)
2019/05/05 Python
Python3 使用map()批量的转换数据类型,如str转float的实现
2019/11/29 Python
如何使用python传入不确定个数参数
2020/02/18 Python
Python自动化之UnitTest框架实战记录
2020/09/08 Python
JVM是一个编译程序还是解释程序
2012/09/11 面试题
市场营销专业毕业生求职信
2014/03/26 职场文书
授权委托书格式模板
2014/04/03 职场文书
消防安全宣传口号
2014/06/10 职场文书
移交协议书
2014/08/19 职场文书
民主生活会批评与自我批评总结
2014/10/17 职场文书
父亲节寄语大全
2015/02/27 职场文书
会计专业自荐信范文
2015/03/05 职场文书
银行安全保卫工作总结
2015/08/10 职场文书
争做文明公民倡议书
2019/06/24 职场文书
在HTML中引入CSS的几种方式介绍
2021/12/06 HTML / CSS