【问题标题】:vuejs binding items dynamicallyvuejs动态绑定项目
【发布时间】:2018-04-08 08:54:15
【问题描述】:

我有想要绑定到数组的基本选择。我用的是vuetify,但是这个问题是通用的。

<v-select
v-bind:items="physicianListSpeciality"
>
</v-select>

现在我想对多个数组使用相同的选择,取决于可能是医生、护士等的 offer.person 值。

data: {
offer.person: "physician" //or offer.person: "nurse"
}

例如physician 我想绑定physicianListSpeciality 对于nurse,我想绑定nurseListSpeciality, 等等

我试着做类似的东西:

<v-select
v-bind:items="`${offer.person}`ListSpeciality"
>
</v-select>

v-bind:items="[offer.person +'ListSpeciality']"

它们似乎都不适合我。 应该如何更正我的代码以使其正常工作?我应该使用某种计算方法还是有其他方法?

【问题讨论】:

  • v-bind:items="offer.person +'ListSpeciality'"
  • @samayo 这给了[Vue warn]: Invalid prop: type check failed for prop "items". Expected Array, got String.

标签: vue.js


【解决方案1】:

嗯,这取决于你的范围。 如果您在窗口范围内工作,您只需使用 window[offer.person + 'ListSpeciality'] 调用 var。

如果我们在组件范围内,并且 getter / data 'nurseListSpeciality' 存在,那么您可以从 this 上下文中调用它,如下所示:this[offer.person + 'ListSpeciality'] where offer.person 将是 'nurse'。

另一种选择是做这样的事情: 以您的商品数据为例

data() {
  return {
    jobs: {
      nurse: [
        'nurse item A',
        'nurse item B',
        'nurse item C',
      ],
      physician: [
        'physician item A',
        'physician item B',
        'physician item C',
      ],
    },
  };
}

那么你可以像这样得到项目:

// offer.person = 'nurse';
<v-select
  :items="jobs[offer.person]"
>
</v-select>

【讨论】:

  • 我在做水疗。这应该可行,但我不想更改我的数组,因为它们是对象数组并且已经在我的应用程序中多次使用。我的意图是简单地更改为 :items prop
  • this.[offer.person + 'ListSpeciality'] 的解决方案对我有用!感谢您的帮助
  • @gileneusz 好的,那么就像我编辑的答案一样,您可以简单地调用this[offer.person + 'ListSpeciality'],因为只传递字符串连接是行不通的。您需要调用该变量来绑定 :items 属性中的数组。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-06
  • 2018-08-06
  • 2020-03-27
  • 2020-02-27
  • 2020-08-20
  • 2022-12-06
  • 2023-03-17
相关资源
最近更新 更多