Vue.js v-for将单个对象视为对象集合

Vue.js v-for将单个对象视为对象集合,vue.js,v-for,Vue.js,V For,我有一个对象(我们称之为employments)像 有时员工将是一组对象,如: { StartDate: "2018-01-01", Name: "Chris" }, { StartDate: "2017-01-01", Name: "Adam Brown" } 如果我像这样迭代 <div v-for="employment in employments"> <p>{{employment.StartDate}}</p> <p&

我有一个对象(我们称之为
employments
)像

有时
员工
将是一组对象,如:

{
 StartDate: "2018-01-01",
 Name: "Chris"
},
{
 StartDate: "2017-01-01",
 Name: "Adam Brown"
}
如果我像这样迭代

<div v-for="employment in employments">
    <p>{{employment.StartDate}}</p>
    <p>{{employment.Name}}</p>
</div>

{{employment.StartDate}

{{employment.Name}

第一个对象示例中给定的键(例如
employment.StartDate
)将失败,因为v-for将迭代对象的键,而不是整个对象。第二组对象将正常工作


如何强制v-for将示例中给出的两个对象视为同一对象?

您不能强制
v-for将对象视为数组;在迭代之前,您需要将数据转换为适当的格式;类型检查可以是一个选项:

v-for="employment in (Array.isArray(employments) ? employments : [employments])"

可以在Vue中解决这个问题,但最好在视图模型中规范化数据,而不是在模板中规范化数据。那就是do
employments=Array.isArray(employments)?employments:[employments]
位于模型侧。您从哪里获取数据?它是硬编码的吗?从php或nodejs等后端获取的json看起来不是有效的json。您需要将这些对象转换为array@TrevorVarwig我用PHP编写的API。但这些只是为了一个简单的例子而打印出来的。
v-for="employment in (Array.isArray(employments) ? employments : [employments])"