使用表达式时 VueJS 2 组件道具不一致
VueJS 2 component prop inconsistency when using expressions
我正在努力将一条信息传递到我的一个组件中。
我正在尝试遍历数据列表,并为列表的最后一项传入一个设置为 true 的布尔值。我 运行 陷入了一个有趣的不一致,如果我在下面的代码中使用 v-bind:isLast="index + 1 == tiers.length"
它的计算结果为 false 但如果我使用 v-bind:test="{index: index, tiersLength: tiers.length, bool: index + 1 == tiers.length}"
并使用一个对象来存储该信息而不是期望一个布尔值,bool 键在对象中的值为 true。
有人知道这是为什么吗?而且,作为计算 属性 会更好吗?我真的不想将层列表中的更多信息传递到组件中,因为我觉得该组件应该完全忽略层列表。
<section id="classification-metadata-editor">
<metadata-button-row
v-for="(row,index) in tiers"
v-bind:row="row"
v-bind:index="index"
v-bind:isLast="index + 1 == tiers.length"
v-bind:test="{index: index, tiersLength: tiers.length, bool: index + 1 == tiers.length}">
</metadata-button-row>
</section>
isLast: false
test: {index: 0, tiersLength: 1, bool: true}
我不太确定这是否是有意为之,因为我觉得我所做的比设置道具的预期要多一些,但我不太确定还能怎么做。我一直在寻找类似的问题,但不太确定搜索的正确术语,所以如果其他地方涉及到这个问题,我深表歉意。
谢谢!
您不能像这样将对象分配给 prop:
v-bind:test="{index: index, tiersLength: tiers.length, bool: index + 1 == tiers.length}">
您必须创建计算 属性 或方法来获取此对象,如下所示:
methods: {
getObject (index) {
return {index: index, tiersLength: this.tiers.length, bool: index + 1 == this.tiers.length}
}
}
并在模板中使用此方法:
v-bind:test="getObject(index)"
我正在努力将一条信息传递到我的一个组件中。
我正在尝试遍历数据列表,并为列表的最后一项传入一个设置为 true 的布尔值。我 运行 陷入了一个有趣的不一致,如果我在下面的代码中使用 v-bind:isLast="index + 1 == tiers.length"
它的计算结果为 false 但如果我使用 v-bind:test="{index: index, tiersLength: tiers.length, bool: index + 1 == tiers.length}"
并使用一个对象来存储该信息而不是期望一个布尔值,bool 键在对象中的值为 true。
有人知道这是为什么吗?而且,作为计算 属性 会更好吗?我真的不想将层列表中的更多信息传递到组件中,因为我觉得该组件应该完全忽略层列表。
<section id="classification-metadata-editor">
<metadata-button-row
v-for="(row,index) in tiers"
v-bind:row="row"
v-bind:index="index"
v-bind:isLast="index + 1 == tiers.length"
v-bind:test="{index: index, tiersLength: tiers.length, bool: index + 1 == tiers.length}">
</metadata-button-row>
</section>
isLast: false
test: {index: 0, tiersLength: 1, bool: true}
我不太确定这是否是有意为之,因为我觉得我所做的比设置道具的预期要多一些,但我不太确定还能怎么做。我一直在寻找类似的问题,但不太确定搜索的正确术语,所以如果其他地方涉及到这个问题,我深表歉意。
谢谢!
您不能像这样将对象分配给 prop:
v-bind:test="{index: index, tiersLength: tiers.length, bool: index + 1 == tiers.length}">
您必须创建计算 属性 或方法来获取此对象,如下所示:
methods: {
getObject (index) {
return {index: index, tiersLength: this.tiers.length, bool: index + 1 == this.tiers.length}
}
}
并在模板中使用此方法:
v-bind:test="getObject(index)"