我正在学习Vue.JS,所有尝试从 currentDashboard 数据表达式中引用 dashboards 属性的尝试都导致“未定义仪表板”。 Vue是否以某种方式在 dashboards 之前先评估 currentDashboard 表达式,还是我需要一些限定词来引用它,这无济于事?
vue = new Vue({
el: '#dashboard',
data: {
dashboards: store.getDashboards(),
currentDashboard: dashboards[0],
}
})
答案 0 :(得分:2)
我认为一种解决方案是可以使用computed
方法,因为dashboards[0]
不在同一created
周期中定义。试试类似的东西:
data: {
dashboards: store.getDashboards(),
},
computed: {
currentDashboard: function () { return this.dashboards[0] }
}
通过这种方式,可以在调用currentDashboard
时定义变量,而不必为此变量重构Vue.js调用。
编辑: 是的,如果您想知道为什么,正如Joel所指出的那样,您可以在官方文档中阅读:
如果您知道以后需要一个属性,但是它开始为空或 不存在,则需要设置一些初始值。
在这种情况下,data()方法以队列中的所有值开始,而不分配它,为此,起始值为undefined
。
此处:https://vuejs.org/v2/guide/instance.html
希望有帮助!
答案 1 :(得分:1)
您可以在返回 dashboard
属性之前创建 data
变量,以便您可以在 data
属性中多次使用它。
vue = new Vue({
el: '#dashboard',
data() {
let dashboard = store.getDashboards()
dashboards: dashboard,
currentDashboard: dashboard[0],
}
希望对你有帮助