【发布时间】:2017-01-24 02:30:35
【问题描述】:
我正在努力将一条信息传递到我的一个组件中。
我正在尝试遍历数据列表,并为列表的最后一项传入一个设置为 true 的布尔值。我遇到了一个有趣的不一致,如果我在下面的代码中使用v-bind:isLast="index + 1 == tiers.length",它的计算结果为false,但如果我使用v-bind:test="{index: index, tiersLength: tiers.length, bool: index + 1 == tiers.length}"并使用一个对象来存储该信息而不是期望一个布尔值,则布尔键的值为对象内为真。
有人知道这是为什么吗?而且,这作为计算属性会更好吗?我真的不想将层列表中的更多信息传递到组件中,因为我觉得该组件应该完全忽略层列表。
<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}
我不太确定这是否是有意的,因为我觉得我做的比设置道具的目的要多一些,但我不太确定该怎么做。我一直在寻找类似的问题,但不太确定搜索的正确术语,所以如果在其他地方有所涉及,我深表歉意。
谢谢!
【问题讨论】:
-
好吧.. 经过数小时的有趣故障排除后,看起来调用变量 isLast 实际上是问题所在。将该变量调用更改为在绑定和组件中进行测试,布尔值开始按预期计算为真。有趣的。似乎大写字母正在抛弃我的代码。不知道为什么。相同的代码,但将变量名替换为 isLast、lastInArray、arrayLast 都返回为 false,但将其命名为 testing、is_last、last_in_array,均评估为 true。
标签: vuejs2 vue-component