Vue.js 将实例属性用作v模型

Vue.js 将实例属性用作v模型,vue.js,Vue.js,我使用表单对象来处理所有输入字段和验证/错误等 new Vue({ el: '#root', data: { form: { trainer: '' } } 我可以将其用作v-model,如下所示: <input v-model='form.trainer' name='trainer'> 但是,它不再是被动的: <input v-model="$form.trainer"> <span v-text="$form.trainer"></sp

我使用
表单
对象来处理所有输入字段和验证/错误等

new Vue({
el: '#root',
data: {
    form: { trainer: '' }
}
我可以将其用作
v-model
,如下所示:

<input v-model='form.trainer' name='trainer'>
但是,它不再是被动的:

<input v-model="$form.trainer">
<span v-text="$form.trainer"></span>

对输入的更改不会反映在范围上


是否有将实例属性用作v-model的解决方案?

使用全局Mixin:

您可以使用全局Mixin,然后向其中添加
表单:{trainer:'}
,然后此选项将在以后创建的每个Vue实例中可用,如:

// inject a handler for `myOption` custom option
Vue.mixin({
  data: function () {
    return {
      form: { trainer: '' }
    }
  }
})
然后您可以像普通组件
数据
选项一样使用它:

<input v-model="form.trainer">
<span v-text="form.trainer"></span>

演示:

//为'myOption'自定义选项注入处理程序
米辛({
数据:函数(){
返回{
表格:{培训师:'}
}
}
})
//定义一个名为trainer的新组件
Vue.组件(“培训师”{
模板:`
`
})
新Vue({
el:#myApp“,
})

使用全局混合:

您可以使用全局Mixin,然后向其中添加
表单:{trainer:'}
,然后此选项将在以后创建的每个Vue实例中可用,如:

// inject a handler for `myOption` custom option
Vue.mixin({
  data: function () {
    return {
      form: { trainer: '' }
    }
  }
})
然后您可以像普通组件
数据
选项一样使用它:

<input v-model="form.trainer">
<span v-text="form.trainer"></span>

演示:

//为'myOption'自定义选项注入处理程序
米辛({
数据:函数(){
返回{
表格:{培训师:'}
}
}
})
//定义一个名为trainer的新组件
Vue.组件(“培训师”{
模板:`
`
})
新Vue({
el:#myApp“,
})


也许混音会更好?我会建议使用vuex,但不确定如何使用声明式rendering@A.L需要阅读关于mixin的内容谢谢他的提示也许mixin会更好?我会建议使用vuex,但不确定如何使用声明式rendering@A.L需要阅读有关Mixin的内容,感谢他的提示所有
组件可能指向相同的
表单。trainer
值?您的解决方案使其具有反应性,但不再是实例属性。您的意思是,如果您更改任何一个培训师组件输入,它应该更新所有培训师组件模型和文本值?@palash是的,非常感谢您,这太棒了。虽然我不知道为什么第一个和第二个解决方案会有不同的结果,但我明白了,这只是一个让我困惑的范围问题。仍然感谢链接所有
组件是否都指向相同的
表单。trainer
值?您的解决方案使其具有反应性,但不再是实例属性。您的意思是,如果您更改任何一个培训师组件输入,它应该更新所有培训师组件模型和文本值?@palash是的,非常感谢您,这太棒了。虽然我不知道为什么第一个和第二个解决方案会有不同的结果,但我明白了,这只是一个让我困惑的范围问题。还是谢谢你的链接