请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

是不是还可以接着写 @change ?

老师,子组件里既然使用 $emit(‘change’, $event.target),那父组件调用可以这样写吗:
<CustomVModel v-model=‘initValue’ @change=‘fn’>

data() {
return { initValue: ‘默认值’ }
},

methods: {
fn(target) {
console.log(target)
// do something,such as change initValue
}
}
第二个问题就是,通过看文档发现:$emit(‘update:title’, newTitle) 这样的方式,和 $emit(‘change’, $event.target) 有什么区别吗?文档描述得不是太清晰,我没看的太懂。

正在回答 回答被采纳积分+3

1回答

双越 2020-03-14 20:03:41

第一,v-model 是双向绑定,会自动变化 data 的值,再用 change 就多此一举了。想监听 data 可以用 watch 。

第二,$emit 第二个参数就是一个值,用 newTitle 还是 $event.target 都可以,只要能获取到你想要的值即可。

0 回复 有任何疑惑可以回复我~
  • 提问者 浅芷初夏 #1
    谢谢老师,第一个问题我明白了。第二个问题其实我是把 v-model 和  prop 双向绑定搞混了,又看了一遍文档才明白。
    文档描述:
    在有些情况下,我们可能需要对一个 prop 进行“双向绑定”。不幸的是,真正的双向绑定会带来维护上的问题,因为子组件可以修改父组件,且在父组件和子组件都没有明显的改动来源。
    这也是为什么我们推荐以 update:myPropName 的模式触发事件取而代之。
    其实这个和 v-model 虽然有点相似,但是,是两个东西
    回复 有任何疑惑可以回复我~ 2020-03-14 20:21:02
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号