vue.js - 有没有办法修复我的两种方式绑定和使用道具传递数据。他们没有被认可
问题描述
我正在尝试使用 v-model,但它没有从“报价”的数据对象中获取我试图绑定的内容。此外,在传递道具时尝试使用 $emit 时,由于某种原因,我的 @click 无法识别我的函数“createNew”。
我查看了有关 VueJS 的文档,也一直在网上搜索并尝试了其他方法,例如可能使用 v-bind 和 @click ,但这似乎不起作用。我很困惑为什么它不起作用。
<template>
<div class="row">
<form>
<div class="col-sm-8 col-sm-offset-2 col-xs-12 col-md-6 col-md-offset-3 form-group">
<label>Quote</label>
<textarea class="form-control" rows="3" v-model="quote"></textarea>
</div>
<div class="col-sm-8 col-sm-offset-2 col-xs-12 col-md-6 col-md-offset-3 form-group">
<button class="btn btn-primary" @click ="createNew">Add Quote</button>
</div>
</form>
</div>
</template>
<script>
export default {
data: function () {
return {
quote: ''
};
},
methods: {
createNew(){
this.$emit(quoteAdded, this.quote);
this.quote = '';
}
}
}
我希望 v-model 注册数据“报价”和 @click 以识别我的“createNew”函数,它根本不是。
解决方案
鉴于您有 a<form>
和 a submit <button>
,您的表单将正常提交。
您可以阻止按钮单击(使用@click.prevent="createNew"
)、使用type="button"
或(这是我的偏好)上的默认事件操作,甚至在<form>
.
使用驼峰式事件名称(如"quoteAdded" )也存在潜在问题。强烈建议您始终使用 kebab-case。请参阅https://vuejs.org/v2/guide/components-custom-events.html#Event-Names
稍微整理一下你的代码,看起来是这样的
<template>
<div class="row">
<form @submit.prevent="createNew">
<!-- and so on -->
<button class="btn btn-primary" type="submit">Add Quote</button>
<!-- snip -->
</form>
</div>
</template>
methods: {
createNew () {
this.$emit('quote-added', this.quote)
this.quote = ''
}
}
在你的父模板中
<your-component @quote-added="handleQuoteAdded">
推荐阅读
- javascript - 为什么我的 if、else if 和 else 语句不能正常工作?
- javascript - Microsoft Graph API:在 Outlook 桌面上调用 getAccessToken 时出现错误 13012
- ruby-on-rails - 迁移 Rails 6.0.34 -> 6.1 后,我无法在 config/environments/development.rb 中使用模型
- java - 在 Java 中使用 CA 证书连接到 Vault
- angular - 如何以角度在页面上创建多个传单地图
- unicode - 有没有办法强制以我的字体将 RTL 字符写为 LTR
- azure - Azure webapp 部署
- android - inActiveTintColor 在标签栏中不起作用反应本机
- python - Python。代码重复多次,因为执行它的命令不同
- python - 如何将字节缓冲区从 Python 传递到 C