详解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 2.0实用简明教程 之Ext类库简介
Apr 29 Javascript
BOM与DOM的区别分析
Oct 26 Javascript
js确认删除对话框效果的示例代码
Feb 20 Javascript
详解WordPress开发中get_current_screen()函数的使用
Jan 11 Javascript
详解Vue.js分发之作用域槽
Jun 13 Javascript
Vue前后端不同端口的实现方法
Sep 19 Javascript
javascript中如何判断类型汇总
May 14 Javascript
通过vue写一个瀑布流插件代码实例
Sep 07 Javascript
JavaScript中使用Spread运算符的八种方法总结
Jun 18 Javascript
uniapp与webview之间的相互传值的实现
Jun 29 Javascript
Vue3+elementui plus创建项目的方法
Dec 01 Vue.js
vue.js 使用原生js实现轮播图
Apr 26 Vue.js
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最常用的ini函数分析 针对PHP.ini配置文件
2010/04/22 PHP
ubuntu下编译安装xcache for php5.3 的具体操作步骤
2013/06/18 PHP
ThinkPHP3.1基础知识快速入门
2014/06/19 PHP
ThinkPHP自动转义存储富文本编辑器内容导致读取出错的解决方法
2014/08/08 PHP
jquery css 设置table的奇偶行背景色示例
2014/06/03 Javascript
Windows 系统下安装和部署Egret的开发环境
2014/07/31 Javascript
jQuery循环动画与获取组件尺寸的方法
2015/02/02 Javascript
js实现类似新浪微博首页内容渐显效果的方法
2015/04/10 Javascript
javascript字符串循环匹配实例分析
2015/07/17 Javascript
JavaScript编程中的Promise使用大全
2015/07/28 Javascript
jQuery下拉友情链接美化效果代码分享
2015/08/26 Javascript
基于JQuery实现仿网易邮箱全屏动感滚动插件fullPage
2015/09/20 Javascript
Angular.js 实现数字转换汉字实例代码
2016/07/14 Javascript
火狐和ie下获取javascript 获取event的方法(推荐)
2016/11/26 Javascript
微信端开发--登录小程序步骤
2017/01/11 Javascript
vue.js实现含搜索的多种复选框(附源码)
2017/03/23 Javascript
重新理解JavaScript的六种继承方式
2017/03/24 Javascript
Easyui和zTree两种方式分别实现树形下拉框
2017/08/04 Javascript
Angular 作用域scope的具体使用
2017/12/11 Javascript
JavaScript设计模式之命令模式实例分析
2019/01/16 Javascript
vue导航栏部分的动态渲染实例
2019/11/01 Javascript
antd form表单数据回显操作
2020/11/02 Javascript
python编程实现12306的一个小爬虫实例
2017/12/27 Python
python2.7到3.x迁移指南
2018/02/01 Python
解决PyCharm不运行脚本,而是运行单元测试的问题
2019/01/17 Python
pycharm修改file type方式
2019/11/19 Python
pytorch加载自己的图像数据集实例
2020/07/07 Python
Python 利用OpenCV给照片换底色的示例代码
2020/08/03 Python
客服文员岗位职责
2013/11/29 职场文书
大学生学业生涯规划
2014/01/05 职场文书
财务会计专业自荐书
2014/06/30 职场文书
现实表现材料范文
2014/12/23 职场文书
环卫工作个人总结
2015/03/04 职场文书
Python中使用subprocess库创建附加进程
2021/05/11 Python
SQL IDENTITY_INSERT作用案例详解
2021/08/23 MySQL
Nginx内网单机反向代理的实现
2021/11/07 Servers