详解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 相关文章推荐
Extjs改变树节点的勾选状态点击按钮将复选框去掉
Nov 14 Javascript
用Jquery.load载入页面实现局部刷新
Jan 22 Javascript
JS自定义对象实现Java中Map对象功能的方法
Jan 20 Javascript
javascript中 try catch用法
Aug 16 Javascript
解读Bootstrap v4 sass设计
May 29 Javascript
JS实现保留n位小数的四舍五入问题示例
Aug 03 Javascript
Angular.JS学习之依赖注入$injector详析
Oct 20 Javascript
js读取json文件片段中的数据实例
Mar 09 Javascript
Node接收电子邮件的实例代码
Jul 21 Javascript
axios的拦截请求与响应方法
Aug 11 Javascript
seajs和requirejs模块化简单案例分析
Aug 26 Javascript
vue+导航锚点联动-滚动监听和点击平滑滚动跳转实例
Nov 13 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中获取内网用户MAC地址(WINDOWS/linux)的实现代码
2011/08/11 PHP
php eval函数用法总结
2012/10/31 PHP
PHP正则表达式匹配替换与分割功能实例浅析
2017/02/04 PHP
PHP获取ttf格式文件字体名的方法示例
2019/03/06 PHP
基础的prototype.js常用函数及其用法
2007/03/10 Javascript
JQuery Dialog的内存泄露问题解决方法
2010/06/18 Javascript
javascript继承之为什么要继承
2012/11/10 Javascript
jQuery中:nth-child选择器用法实例
2014/12/31 Javascript
JS监听微信、支付宝等移动app及浏览器的返回、后退、上一页按钮的事件方法
2016/08/05 Javascript
关于Vue.js一些问题和思考学习笔记(2)
2016/12/02 Javascript
详解VUE的状态控制与延时加载刷新
2017/03/27 Javascript
AngularJS 霸道的过滤器小结
2017/04/26 Javascript
让你彻底掌握es6 Promise的八段代码
2017/07/26 Javascript
用js实现before和after伪类的样式修改的示例代码
2017/09/07 Javascript
浅谈使用mpvue开发小程序需要注意和了解的知识点
2018/05/23 Javascript
JavaScript中this关键字用法实例分析
2018/08/24 Javascript
JS实现的tab切换并显示相应内容模块功能示例
2019/08/03 Javascript
Vue生命周期activated之返回上一页不重新请求数据操作
2020/07/26 Javascript
python使用xauth方式登录饭否网然后发消息
2014/04/11 Python
Python计算字符宽度的方法
2016/06/14 Python
Django视图之ORM数据库查询操作API的实例
2017/10/27 Python
python删除过期log文件操作实例解析
2018/01/31 Python
pandas 获取季度,月度,年度首尾日期的方法
2018/04/11 Python
python调用接口的4种方式代码实例
2019/11/19 Python
Python的历史与优缺点整理
2020/05/26 Python
PyTorch: Softmax多分类实战操作
2020/07/07 Python
ProForm英国站点:健身房和健身器材网上商店
2019/06/05 全球购物
如何利用find命令查找文件
2016/11/18 面试题
20岁生日感言
2014/01/13 职场文书
通信研究生自荐信
2014/02/01 职场文书
网络研修随笔感言
2014/02/17 职场文书
干部考察材料范文
2014/12/24 职场文书
幼儿园端午节活动总结
2015/05/05 职场文书
2015团员个人年度总结
2015/11/24 职场文书
电脑无法安装Windows 11怎么办?无法安装Win11的解决方法
2021/11/21 数码科技
前端vue+express实现文件的上传下载示例
2022/02/18 Vue.js