【发布时间】:2019-12-27 08:11:27
【问题描述】:
我们正在创建一个表单,该表单通过输入的多个级别具有多个依赖项。所以如果parent1.input1 = 'test',那么child1.input1 应该等于测试。但是如果child1.input2 = 'more test',那么child1.input3应该等于'more test'。
let v = new Vue({
el:'#someEl',
data:{
parentval1:'foo',
parentVal2:'bar',
children:[
{childVal1:'bax', modelAttr:'parentVal1'},
{childVal2:'bix', modelAttr:'childVal1'},
{childVal3:'boom', modelAttr:'childVal2'}
]
},
methods:{
whichModelField(modelAttr){
swith (modelAttr){
case 'parentVal1':
return xx; //should be bound to some data property if modelAttr === 'parentVal1'
case 'childVal1':
return yy; //should be bound to some other data property if modelAttr === 'childVal1'
}
}
}
})
<div>
<p id='parent'>
<input id="1" placeholder="test" v-model="parentVal1"/>
</p>
<p id='child1' v-for="child in children">
<input placeholder="test" v-model="whichModelField(child.modelAttr)"/>
</p>
</div>
我已经弄清楚如何动态绑定v-model attr 但是,我无法弄清楚如何使其在当前项目的上下文和父数据上下文(松散意义上的上下文)之间真正动态化。 IOW,我希望能够在数据对象的任何级别绑定到数据属性,但我无法弄清楚实现它的语法。
【问题讨论】:
-
您能否更新您的问题以包含 vue.js?还可以查看计算 vuejs.org/v2/guide/computed.html 您是否想在输入中输入一些内容,如果 value = something,请设置一个值?
-
vue 代码在小提琴中。我要问的是:我在一个表中有 10 行,每行在第一个单元格中都有一个输入。其中一些输入需要绑定到“父”数据对象的一个值,而一些输入需要绑定到“父”中的不同值。另一方面,有些需要绑定到同一“子”级别的其他输入。这一切都基于单元格 2 中每一行的属性值。所以,我希望遍历这些行,并根据该行的单元格 2 中的值,相应地绑定单元格中的输入。跨度>
-
尝试更新sn-p澄清一下
-
v-model 用于 2 方向绑定,我认为您不希望孩子会更新父母。你应该使用一个方向绑定:
:value="" -
@ZivBen-或者谢谢,我会记住这一点。但是,OTOH,规范说我们应该禁用依赖字段的输入,因此数据在这方面受到保护。
标签: javascript vue.js binding