[英]Vue v-model bind issue
嗨,我已经讨论这个问题好几天了。 我正在尝试使用 Vue 的 v-model 将数据绑定到输入文本。 我的Vue安装在我的项目中,并且在header中添加了cdn
链接。 文本框仅在重新加载时显示一瞬间的数据,然后消失。 可能是安装问题? 我在控制台的 Laravel 项目中直接安装了 npm vue。
我的 HTML:
<div id='postEdit'>
<input type="text" name="title" id="title" class="form-control" v-model="post.body">
</div>
我的 Vue:
var edit = new Vue({
el: '#postEdit',
data: {
post: {
body: 'this is body'
}
},
});
我在控制台中运行 edit.post 时的输出:
Object { body: Getter & Setter, … }
您的 data 属性是错误的,它需要是一个返回对象的函数。 像这样改变:
data () {
return {
post: {
body: 'this is body'
}
}
}
Vue.js 文档说在data
选项中你必须使用普通对象:
Vue 会递归地将其属性转换为 getter/setter 以使其“反应”。 对象必须是普通的:浏览器 API 对象和原型属性等原生对象将被忽略。 一个经验法则是数据应该只是数据——不建议观察具有自己状态行为的对象。
对于您的示例,我将使用计算属性返回您的post
的body
属性。
我的意思是这样的 JSFiddle 。
只需将您的数据设为函数并再次检查即可。 证明
<div id='postEdit'>
<input type="text" name="title" id="title" class="form-control" v-model="post.body">
</div>
var edit = new Vue({
el: '#postEdit',
data: function() {
return {
post: {
body: 'this is bodygfdgfd'
}
}
}
});
哦,还有这个控制台的东西……试试 edit.post.body
您会看到 {getter, setter} 因为 Vue 使用 Object.defineProperty 方法“编译”数据对象来观察数据的变化。 引擎盖下的吸气剂工作得很好,相信我;)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.