详解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 EasyUI 对话框的使用方法
Oct 24 Javascript
提取字符串中年月日的函数代码
Nov 05 Javascript
javascript中Function类型详解
Apr 28 Javascript
JSON字符串转JSON对象
Jul 31 Javascript
javascript动画系列之模拟滚动条
Dec 13 Javascript
angular实现表单验证及提交功能
Feb 01 Javascript
thinkphp标签实现bootsrtap轮播carousel实例代码
Feb 19 Javascript
Boostrap栅格系统与自己额外定义的媒体查询的冲突问题
Feb 19 Javascript
angularjs项目的页面跳转如何实现(5种方法)
May 25 Javascript
Vue开发环境跨域访问问题
Jan 22 Javascript
vue页面引入three.js实现3d动画场景操作
Aug 10 Javascript
jQuery实现容器间的元素拖拽功能
Dec 01 jQuery
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脚本
2006/11/26 PHP
PHP伪静态写法附代码
2008/06/20 PHP
Yii框架关联查询with用法分析
2014/12/02 PHP
php实现将任意进制数转换成10进制的方法
2015/04/17 PHP
PHP实现发送微博消息功能完整示例
2019/12/04 PHP
javascript 屏蔽鼠标键盘的几段代码
2008/01/02 Javascript
jquery下异步提交表单 异步跨域提交表单
2010/11/17 Javascript
jQuery 阴影插件代码分享
2012/01/09 Javascript
Jquery多选框互相内容交换的实例代码
2013/07/04 Javascript
JS获取键盘上任意按键的值(实例代码)
2013/11/12 Javascript
json实现前后台的相互传值详解
2015/01/05 Javascript
Javascript数据结构与算法之列表详解
2015/03/12 Javascript
JS实现消息来时让网页标题闪动效果的方法
2016/04/20 Javascript
特殊日期提示功能的实现方法
2016/06/16 Javascript
BootStrap table表格插件自适应固定表头(超好用)
2016/08/24 Javascript
微信小程序 icon组件详细及实例代码
2016/10/25 Javascript
jQuery简单绑定单个事件的方法示例
2017/06/10 jQuery
iview日期控件,双向绑定日期格式的方法
2018/03/15 Javascript
viewer.js一个强大的基于jQuery的图像查看插件(支持旋转、缩放)
2020/04/01 jQuery
Vue ​v-model相关知识总结
2021/01/28 Vue.js
[02:06]DOTA2肉山黑名单魔法终结者 敌法师中文配音鉴赏
2013/06/17 DOTA
在Python中使用matplotlib模块绘制数据图的示例
2015/05/04 Python
Python中的推导式使用详解
2015/06/03 Python
Python利用带权重随机数解决抽奖和游戏爆装备问题
2016/06/16 Python
Python小游戏之300行代码实现俄罗斯方块
2019/01/04 Python
Kali Linux安装ipython2 和 ipython3的方法
2019/07/11 Python
python 实现二维列表转置
2019/12/02 Python
利用PyCharm操作Github(仓库新建、更新,代码回滚)
2019/12/18 Python
pytorch实现线性拟合方式
2020/01/15 Python
python 实现网易邮箱邮件阅读和删除的辅助小脚本
2021/03/01 Python
CSS3制作气泡对话框的实例教程
2016/05/10 HTML / CSS
全民健身日活动方案
2014/01/29 职场文书
《小小竹排画中游》教学反思
2014/02/26 职场文书
捐款倡议书
2014/04/14 职场文书
工作推荐信模板
2015/03/25 职场文书
Flutter集成高德地图并添加自定义Maker的实践
2022/04/07 Java/Android