详解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 相关文章推荐
可以文本显示的公告栏的js代码
Mar 11 Javascript
JavaScript 开发规范要求(图文并茂)
Jun 11 Javascript
Jquery实现鼠标移上弹出提示框、移出消失思路及代码
May 19 Javascript
javascript调试过程中找不到哪里出错的可能原因
Dec 16 Javascript
javascript 模拟坦克大战游戏(html5版)附源码下载
Apr 08 Javascript
我用的一些Node.js开发工具、开发包、框架等总结
Sep 25 Javascript
jquery提示效果实例分析
Nov 25 Javascript
jQuery的ready方法详解
Nov 27 Javascript
基于EasyUI的基础之上实现树形功能菜单
Jun 28 Javascript
javascript实现简易聊天室
Jul 12 Javascript
vue+webpack dev本地调试全局样式引用失效的解决方案
Nov 12 Javascript
JavaScript函数柯里化
Nov 07 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抓即时股票信息
2006/10/09 PHP
PHP中执行MYSQL事务解决数据写入不完整等情况
2014/01/07 PHP
读jQuery之五(取DOM元素)
2011/06/20 Javascript
js时间日期格式化封装函数
2014/12/02 Javascript
浅谈javascript面向对象程序设计
2015/01/21 Javascript
jquery实现页面虚拟键盘特效
2015/08/08 Javascript
Jquery ajax基础教程
2015/11/20 Javascript
Javascript中的几种继承方式对比分析
2016/03/22 Javascript
浅析Javascript ES6中的原生Promise
2016/08/25 Javascript
完美解决IE9浏览器出现的对象未定义问题
2016/09/29 Javascript
微信小程序 Video API实例详解
2016/10/02 Javascript
Angular ng-repeat遍历渲染完页面后执行其他操作详细介绍
2016/12/13 Javascript
纯原生js实现贪吃蛇游戏
2020/04/16 Javascript
微信小程序url与token设置详解
2017/09/26 Javascript
vue-cli项目根据线上环境分别打出测试包和生产包
2018/05/23 Javascript
详解webpack自定义loader初探
2018/08/29 Javascript
使用ng-packagr打包Angular的方法示例
2018/09/21 Javascript
Vue框架下引入ActiveX控件的问题解决
2019/03/25 Javascript
微信小程序开发(二):页面跳转并传参操作示例
2020/06/01 Javascript
Python Web框架Flask下网站开发入门实例
2015/02/08 Python
python爬虫租房信息在地图上显示的方法
2019/05/13 Python
Python selenium模块实现定位过程解析
2020/07/09 Python
python实现图像外边界跟踪操作
2020/07/13 Python
python使用selenium爬虫知乎的方法示例
2020/10/28 Python
GLAMGLOW香港官网:明星出镜前的秘密武器
2017/03/16 全球购物
大学毕业生的自我鉴定
2013/11/30 职场文书
生日邀请函范文
2014/01/13 职场文书
房地产财务管理制度
2014/02/02 职场文书
12月红领巾广播稿
2014/02/13 职场文书
运动会跳远加油稿
2014/02/20 职场文书
大课间体育活动方案
2014/03/12 职场文书
党支部遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
2015年食堂工作总结报告
2015/04/23 职场文书
因个人原因离职的辞职信范文
2015/05/12 职场文书
python3 实现mysql数据库连接池的示例代码
2021/04/17 Python
大脑的记忆过程在做数据压缩,不同图形也有共同的记忆格式
2022/04/29 数码科技