详解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 相关文章推荐
XHTML-Strict 内允许出现的标签
Dec 11 Javascript
javascript 写类方式之八
Jul 05 Javascript
js 操作符实例代码
Oct 24 Javascript
js或css实现滚动广告的几种方案
Jan 28 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 简史
Jan 09 Javascript
JS动态改变浏览器标题的方法
Apr 06 Javascript
jQuery Ajax传值到Servlet出现乱码问题的解决方法
Oct 09 Javascript
Angular.js中定时器循环的3种方法总结
Apr 27 Javascript
详解在AngularJS的controller外部直接获取$scope
Jun 02 Javascript
vuex的简单使用教程
Feb 02 Javascript
使用weixin-java-tools完成微信授权登录、微信支付的示例
Sep 26 Javascript
Vue父子组件之间的通信实例详解
Sep 28 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学习笔记 PHP面向对象的程序设计
2011/06/13 PHP
PHP根据IP判断地区名信息的示例代码
2014/03/03 PHP
php绘制一个扇形的方法
2015/01/24 PHP
php实现检查文章是否被百度收录
2015/01/27 PHP
php实现从上传文件创建缩略图的方法
2015/04/02 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
2017/12/25 PHP
简单谈谈json跨域
2016/03/13 Javascript
javascript中setAttribute兼容性用法分析
2016/12/12 Javascript
AngularJS的依赖注入实例分析(使用module和injector)
2017/01/19 Javascript
用JS编写一个函数,返回数组中重复出现过的元素(实例)
2017/09/14 Javascript
使用Angular CLI生成 Angular 5项目教程详解
2018/03/18 Javascript
vue实例的选项总结
2020/06/09 Javascript
vue 点击其他区域关闭自定义div操作
2020/07/17 Javascript
[48:02]Ti4循环赛第三日 VG vs Liquid和NEWBEE vs DK
2014/07/12 DOTA
python使用turtle库与random库绘制雪花
2018/06/22 Python
pygame实现雷电游戏雏形开发
2018/11/20 Python
利用nohup来开启python文件的方法
2019/01/14 Python
详解python--模拟轮盘抽奖游戏
2019/04/12 Python
如何将 awk 脚本移植到 Python
2019/12/09 Python
Python文本处理简单易懂方法解析
2019/12/19 Python
python 在threading中如何处理主进程和子线程的关系
2020/04/25 Python
预备党员思想汇报范文
2013/12/29 职场文书
数控技术应用个人求职信范文
2014/02/03 职场文书
一份创业计划书范文
2014/02/08 职场文书
五四青年节演讲稿
2014/05/26 职场文书
保险公司开门红口号
2014/06/21 职场文书
寻找最美家庭活动方案
2014/08/20 职场文书
高中生综合素质自我评价
2015/03/06 职场文书
社区禁毒宣传活动总结
2015/05/07 职场文书
撤诉申请怎么写
2015/05/19 职场文书
离婚律师函范本
2015/05/27 职场文书
2016年教师反腐倡廉心得体会
2016/01/13 职场文书
一篇文章弄懂MySQL查询语句的执行过程
2021/05/07 MySQL
Java 泛型详解(超详细的java泛型方法解析)
2021/07/02 Java/Android
Docker与K8s关系介绍不会Docker也可以使用K8s
2022/06/25 Servers
Golang Web 框架Iris安装部署
2022/08/14 Python