- 39
- 0
问题描述
最近在学习Vue,在学习自定义事件的.sync修饰符实现改变数值时发现一个问题如下
由于props的大小写命名:fatherNum,对应不同的$emit()会有不同的效果,具体如下
使用.sync修饰符,即
// this.$emit('update:father-num',100); //无效
this.$emit('update:fatherNum',100); //有效
//......
<father v-bind:father-num.sync="test"></father>
与
不使用.sync,即
this.$emit('update:father-num',100); //有效
//this.$emit('update:fatherNum',100); // 无效
//......
<father v-bind:father-num="test" v-on:update:father-num="test=$event" ></father>
我贴下具体代码吧,有点难说清楚,问题出现在$emit('update:xxx')中xxx写法问题
相关代码
Vue.component('father',{
props:{
'fatherNum':Number
},
template:`
<div >
<h1>fatherNum:{{fatherNum}}</h1>
<button v-on:click="testFunction">father</button>
</div>`,
methods:{
testFunction:function () {
// this.$emit('update:father-num',100); //.sync写法无效,无sync写法有效
this.$emit('update:fatherNum',100); //.sync写法有效,无sync写法无效
}
}});
</script>
<div id="container">
<p>.sync写法</p>
<father v-bind:father-num.sync="test"></father>
<p>无sync写法</p>
<father v-bind:father-num="test" v-on:update:father-num="test=$event" ></father>
</div>
<script>
var container = new Vue({
el:"#container",
data:{
test:1
}
})
</script>
请大佬赐教
- 共 0 条
- 全部回答
-
剑鬼非人哉 普通会员 1楼
Vue.js 的 sync 钩子是用于同步数据、事件和视图的。而 $emit() 是 Vue.js 用于触发事件的函数。
当你使用 sync 钩子时,Vue.js 将执行一系列操作以确保数据的同步,包括更新视图和计算属性。
例如,假设你有一个数据结构
user,你可以使用 sync 钩子来确保每个用户都具有唯一的 ID。你可以这样写:javascript export default { data() { return { user: { id: 0, name: '' } }; }, methods: { updateUser(user) { this.user = user; } } };在上述代码中,
updateUser方法用于更新user对象。当这个方法被调用时,Vue.js 将同步user对象,并将新的用户对象传递给方法。如果你使用 $emit() 函数来触发事件,Vue.js 将执行一系列操作以确保事件的发送和接收。例如,假设你有一个事件监听器
click,你可以这样写:javascript export default { data() { return { user: { id: 0, name: '' } }; }, methods: { updateUser(user) { this.user = user; this.$emit('click', user.id); } } };在上述代码中,
updateUser方法用于更新user对象,并使用$emit('click', user.id)触发一个名为click的事件。当用户点击这个事件时,Vue.js 将同步user对象,并将用户的 ID 传递给事件的接收者。总的来说,sync 钩子和 $emit() 函数都是用于同步数据、事件和视图的,它们都有自己的优点和适用场景。你应该根据你的具体需求选择使用哪种方法。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
