Vuejs2 使用表达式时VueJS 2组件属性不一致

Vuejs2 使用表达式时VueJS 2组件属性不一致,vuejs2,vue-component,Vuejs2,Vue Component,我正在努力将一条信息传递到我的一个组件中 我试图迭代一个数据列表,并为列表的最后一项传入一个布尔值集为true。我遇到了一个有趣的不一致性,如果我在下面的代码中使用v-bind:isLast=“index+1==tiers.length”它的计算结果为false,但是如果我使用v-bind:test=“{index:index,tiersLength:tiers.length,bool:index+1==tiers.length}”并使用对象存储该信息,而不是期望布尔值,布尔键在对象中的值为tr

我正在努力将一条信息传递到我的一个组件中

我试图迭代一个数据列表,并为列表的最后一项传入一个布尔值集为true。我遇到了一个有趣的不一致性,如果我在下面的代码中使用
v-bind:isLast=“index+1==tiers.length”
它的计算结果为false,但是如果我使用
v-bind:test=“{index:index,tiersLength:tiers.length,bool:index+1==tiers.length}”
并使用对象存储该信息,而不是期望布尔值,布尔键在对象中的值为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}

isLast:错
测试:{index:0,tiersLength:1,bool:true}
我不太确定这是否是我想要的,因为我觉得我做的比设置道具可能要多一些,但我不太确定如何做。我一直在寻找类似的问题,但不太确定搜索的合适术语,因此如果其他地方涉及到这一点,我深表歉意


谢谢大家!

不能像这样将对象指定给道具:

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)"

我更新了代码以反映该建议,但它似乎仍然返回false,而我希望返回true。以下是更新:
v-bind:isLast=“isLast(index)”
添加到父级:
方法:{isLast:function(index){return Boolean(index+1==this.tiers.length)}
我也在没有布尔值的情况下尝试了它。仍然是错误的。我也不太确定你所说的不能绑定这样的对象是什么意思。我确实是用上面的代码完成的。也许这种做法不可取?或者是非反应性的,所以我们不使用它?如果我能弄清楚我的代码到底发生了什么,我会做进一步的解释。谢谢非常感谢您对如何更好地组织我的代码@Saurabh提供的帮助和建议。将您的响应标记为对所提供的附加信息的回答。:)好吧。经过数小时有趣的故障排除,似乎调用变量isLast才是真正的问题所在。将该变量调用更改为绑定和组件中的测试,布尔值开始按预期计算为true。很有趣。似乎大写字母正在偏离我的代码。不确定原因。相同的代码,但用isLast、lastInArray、arrayLast替换变量名都返回为false,但命名为testing,is_last,last_in_array,全部计算为true。