我可以将数据中的一个值附加到另一个值吗?
Can I append one value from data to another?
我有下一个data
函数:
data: function ()
{
img_starttime: "11:44", // be default it's empty. value only for test
img_startdate: moment(new Date()).add(function () {return this.img_starttime.split(":")[0]}, 'hours')
}
我需要将 img_startdate
增加到 img_starttime
值。但似乎下一个代码不起作用,因为在控制台上我没有任何数据增量结果。
还有一个问题就是img_starttime
是空的,需要用户输入后才能得到值,所以我不能对undefined
值做split
这样的操作.
有没有更好的写法?
使用 moment.js
完成数据增量
您的问题出在 moment().add
函数中 this
的作用域。
虽然您希望您的 this.img_starttime
引用外部范围,但它实际上是您的 function() {..}
创建的新范围,因此它是 undefined
类似问题:
您的代码应如下所示:
data: function ()
{
img_starttime: "11:44", // be default it's empty. value only for test
img_startdate: moment(new Date()).add(() => {
return this.img_starttime.split(":")[0]
}, 'hours')
}
或者,您不想使用箭头函数,您可以执行以下操作:
data: function ()
{
var self = this; // 'self' points to 'this' of Vue component
img_starttime: "11:44", // be default it's empty. value only for test
img_startdate: moment(new Date()).add(() => {
return self.img_starttime.split(":")[0] // 'self' is 'this' of outside scope
}, 'hours')
}
希望对您有所帮助!
请注意:我没有使用过moment.add功能,所以我不知道那部分代码是否正确。我的回答仅指出我注意到的范围界定错误。
编辑:附加信息
当我发布答案时,首先引起我注意的是函数范围。今天第二次检查时,我发现其他几个问题:
- 您应该使用
img_startdate
的计算属性,因为它取决于 img_starttime
属性。您将无法在 data
本身中定义依赖项。
- 您的数据是一个函数,但它不是 return对象。应该修改为return一个对象,如下面的示例代码所示
需要更改:
data: function () {
return {
img_starttime: "11:44", // be default it's empty. value only for test
}
},
computed: {
img_startdate: function() {
return moment(new Date()).add(() => {
return this.img_starttime.split(":")[0]
}, 'hours')
}
}
请注意:我不知道 moment.add
是如何工作的,我从来没有用过它。目前,上面的代码示例仅根据 Vue.js 预期并根据您的要求设置数据和计算属性。
我有下一个data
函数:
data: function ()
{
img_starttime: "11:44", // be default it's empty. value only for test
img_startdate: moment(new Date()).add(function () {return this.img_starttime.split(":")[0]}, 'hours')
}
我需要将 img_startdate
增加到 img_starttime
值。但似乎下一个代码不起作用,因为在控制台上我没有任何数据增量结果。
还有一个问题就是img_starttime
是空的,需要用户输入后才能得到值,所以我不能对undefined
值做split
这样的操作.
有没有更好的写法?
使用 moment.js
完成数据增量您的问题出在 moment().add
函数中 this
的作用域。
虽然您希望您的 this.img_starttime
引用外部范围,但它实际上是您的 function() {..}
创建的新范围,因此它是 undefined
类似问题:
您的代码应如下所示:
data: function ()
{
img_starttime: "11:44", // be default it's empty. value only for test
img_startdate: moment(new Date()).add(() => {
return this.img_starttime.split(":")[0]
}, 'hours')
}
或者,您不想使用箭头函数,您可以执行以下操作:
data: function ()
{
var self = this; // 'self' points to 'this' of Vue component
img_starttime: "11:44", // be default it's empty. value only for test
img_startdate: moment(new Date()).add(() => {
return self.img_starttime.split(":")[0] // 'self' is 'this' of outside scope
}, 'hours')
}
希望对您有所帮助!
请注意:我没有使用过moment.add功能,所以我不知道那部分代码是否正确。我的回答仅指出我注意到的范围界定错误。
编辑:附加信息
当我发布答案时,首先引起我注意的是函数范围。今天第二次检查时,我发现其他几个问题:
- 您应该使用
img_startdate
的计算属性,因为它取决于img_starttime
属性。您将无法在data
本身中定义依赖项。 - 您的数据是一个函数,但它不是 return对象。应该修改为return一个对象,如下面的示例代码所示
需要更改:
data: function () {
return {
img_starttime: "11:44", // be default it's empty. value only for test
}
},
computed: {
img_startdate: function() {
return moment(new Date()).add(() => {
return this.img_starttime.split(":")[0]
}, 'hours')
}
}
请注意:我不知道 moment.add
是如何工作的,我从来没有用过它。目前,上面的代码示例仅根据 Vue.js 预期并根据您的要求设置数据和计算属性。