详解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 相关文章推荐
跟随鼠标旋转的文字
Nov 30 Javascript
javascript 24小时弹出一次的代码(利用cookies)
Sep 03 Javascript
javascript折半查找详解
Jan 26 Javascript
详解Javascript中的Object对象
Feb 28 Javascript
Javascript 基础---Ajax入门必看
Jul 06 Javascript
详细解读Jquery各Ajax函数($.get(),$.post(),$.ajax(),$.getJSON())
Aug 15 Javascript
jQuery弹出窗口简单实现代码
Mar 09 Javascript
js移动端图片压缩上传功能
Aug 18 Javascript
vue-infinite-loading2.0 中文文档详解
Apr 08 Javascript
详解JavaScript函数callee、call、apply的区别
Mar 08 Javascript
vue 使用element-ui中的Notification自定义按钮并实现关闭功能及如何处理多个通知
Aug 17 Javascript
mpvue实现左侧导航与右侧内容的联动
Oct 21 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/06/06 PHP
PHP 实现类似js中alert() 提示框
2015/03/18 PHP
浅析PHP7新功能及语法变化总结
2016/06/17 PHP
实例讲解PHP表单验证功能
2019/02/15 PHP
js 跨域和ajax 跨域问题小结
2009/07/01 Javascript
一个背景云变换js特效 鼠标移动背景云变化
2012/12/28 Javascript
js实现数组去重、判断数组以及对象中的内容是否相同
2013/11/29 Javascript
javasctipt如何显示几分钟前、几天前等
2014/04/30 Javascript
input标签内容改变的触发事件介绍
2014/06/18 Javascript
JavaScript将取代AppleScript?
2014/09/18 Javascript
js实现从数组里随机获取元素
2015/01/12 Javascript
四种参数传递的形式——URL,超链接,js,form表单
2015/07/24 Javascript
js绘制圆形和矩形的方法
2015/08/05 Javascript
jQuery插件Timelinr 实现时间轴特效
2015/10/04 Javascript
jQuery删除节点用法示例(remove方法)
2016/09/08 Javascript
深入理解Angularjs中$http.post与$.post
2017/05/19 Javascript
webpack4与babel配合使es6代码可运行于低版本浏览器的方法
2018/10/12 Javascript
JavaScript缺少insertAfter解决方案
2020/07/03 Javascript
详解JavaScript 高阶函数
2020/09/14 Javascript
[47:04]LGD vs infamous Supermajor小组赛D组 BO3 第二场 6.3
2018/06/04 DOTA
[49:08]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第一场 11.27
2020/12/01 DOTA
Python模拟登陆实现代码
2017/06/14 Python
Python3爬取英雄联盟英雄皮肤大图实例代码
2018/11/14 Python
使用 Python 处理 JSON 格式的数据
2019/07/22 Python
python matplotlib折线图样式实现过程
2019/11/04 Python
python实现while循环打印星星的四种形状
2019/11/23 Python
python selenium xpath定位操作
2020/09/01 Python
jupyter notebook快速入门及使用详解
2020/11/13 Python
英国领先的汽车轮胎和快速健康中心:Kwik Fit
2017/10/29 全球购物
日本乐天德国站:Rakuten.de
2019/05/16 全球购物
Lowe’s加拿大:家居装修、翻新和五金店
2019/12/06 全球购物
人民调解员先进事迹材料
2014/05/08 职场文书
奥巴马胜选演讲稿
2014/05/15 职场文书
2015年全国爱眼日活动方案
2015/05/05 职场文书
怒海潜将观后感
2015/06/11 职场文书
Pytorch中expand()的使用(扩展某个维度)
2022/07/15 Python