最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

详解VUE自定义组件中用.sync修饰符与v-model的区别

来源:动视网 责编:小采 时间:2020-11-27 22:12:11
文档

详解VUE自定义组件中用.sync修饰符与v-model的区别

详解VUE自定义组件中用.sync修饰符与v-model的区别:.sync修饰组件 <!DOCTYPE html> <html lang=en> <head> <meta charset=UTF-8> <title>vue-03</title> <!-- 引入Vue --> <link href=https://c
推荐度:
导读详解VUE自定义组件中用.sync修饰符与v-model的区别:.sync修饰组件 <!DOCTYPE html> <html lang=en> <head> <meta charset=UTF-8> <title>vue-03</title> <!-- 引入Vue --> <link href=https://c


.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方法.

文档

详解VUE自定义组件中用.sync修饰符与v-model的区别

详解VUE自定义组件中用.sync修饰符与v-model的区别:.sync修饰组件 <!DOCTYPE html> <html lang=en> <head> <meta charset=UTF-8> <title>vue-03</title> <!-- 引入Vue --> <link href=https://c
推荐度:
标签: VUE sync vue中
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top