详解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 相关文章推荐
Web开发之JavaScript
Mar 29 Javascript
js中indexof的用法详细解析
Dec 24 Javascript
无刷新预览所选择的图片示例代码
Apr 02 Javascript
jQuery中:eq()选择器用法实例
Dec 29 Javascript
js采用concat和sort将N个数组拼接起来的方法
Jan 21 Javascript
Jquery跨域获得Json的简单实例
May 18 Javascript
jquery代码规范让代码越来越好看
Feb 03 Javascript
vue+node+webpack环境搭建教程
Nov 05 Javascript
基于vue循环列表时点击跳转页面的方法
Aug 31 Javascript
详解从react转职到vue开发的项目准备
Jan 14 Javascript
使用Webpack提升Vue.js应用程序的4种方法(翻译)
Oct 09 Javascript
vue中的.$mount('#app')手动挂载操作
Sep 02 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
咖啡店都有些什么常规豆子呢?有什么风味在里面
2021/03/04 咖啡文化
php mysql Errcode: 28 终极解决方法
2009/07/01 PHP
thinkPHP3.x常量整理(预定义常量/路径常量/系统常量)
2016/05/20 PHP
jqGrid jQuery 表格插件测试代码
2011/08/23 Javascript
JavaScript中使用Substring删除字符串最后一个字符
2013/11/03 Javascript
Javascript实现div的toggle效果实例分析
2015/06/09 Javascript
整理JavaScript创建对象的八种方法
2015/11/03 Javascript
JavaScript实战之带收放动画效果的导航菜单
2016/08/16 Javascript
快速实现JS图片懒加载(可视区域加载)示例代码
2017/01/04 Javascript
利用Chrome DevTools直接调试Node.js和JavaScript的方法详解(并行)
2017/02/16 Javascript
jQuery+vue.js实现的九宫格拼图游戏完整实例【附源码下载】
2017/09/12 jQuery
JS运动特效之任意值添加运动的方法分析
2018/01/24 Javascript
vue实现点击选中,其他的不选中方法
2018/09/05 Javascript
es6数据变更同步到视图层的方法
2019/03/04 Javascript
JavaScript 实现拖拽效果组件功能(兼容移动端)
2020/11/11 Javascript
python3爬取数据至mysql的方法
2018/06/26 Python
Django 中使用流响应处理视频的方法
2018/07/20 Python
Python 面试中 8 个必考问题
2018/11/16 Python
python 获取url中的参数列表实例
2018/12/18 Python
用Anaconda安装本地python包的方法及路径问题(图文)
2019/07/16 Python
Python logging模块异步线程写日志实现过程解析
2020/06/30 Python
css3 border-image使用说明
2010/06/23 HTML / CSS
HTML5声音录制/播放功能的实现代码
2018/05/03 HTML / CSS
香港最新科技与优质家居产品购物网站:J SELECT
2018/08/21 全球购物
英国文具、办公用品和科技商店:Ryman
2018/09/27 全球购物
一家专门经营包包的英国网站:MyBag
2019/09/08 全球购物
有趣的睡衣和礼物:LazyOne
2019/11/27 全球购物
总经理办公室主任岗位职责
2013/11/12 职场文书
公司外出活动方案
2014/08/14 职场文书
党支部三严三实对照检查材料思想汇报
2014/09/29 职场文书
债务授权委托书范本
2014/10/17 职场文书
《观察物体》教学反思
2016/02/17 职场文书
oracle覆盖导入dmp文件的2种方法
2021/05/21 Oracle
mybatis中注解与xml配置的对应关系和对比分析
2021/08/04 Java/Android
MySQL事务操作的四大特性以及并发事务问题
2022/04/12 MySQL
腾讯云服务器部署前后分离项目之前端部署
2022/06/28 Servers