繁体   English   中英

Vue v-model 绑定问题

[英]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 对象和原型属性等原生对象将被忽略。 一个经验法则是数据应该只是数据——不建议观察具有自己状态行为的对象。

对于您的示例,我将使用计算属性返回您的postbody属性。

我的意思是这样的 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM