我创建了一个查找对象的函数:
store.js
store.find = () => {
const query = new Parse.Query(Document)
return query.find()
}
我这样使用(并将值分配给this.documents
):
main.js
store.find().then((results) => {
this.documents = _.map(results, (result) => {
return result.toJSON()
})
})
有效。但store.find().then( ...)
部分在main.js
中重复多次,因此我将其转换为函数:
store.js
store.fetch = (documents) => {
return store.find().then((results) => {
documents = _.map(results, (result) => {
return result.toJSON()
})
})
}
我使用的是这样的:
main.js
store.fetch(this.documents)
但没有为this.documents
分配任何内容,也没有错误消息。可能是什么问题?
注意: this.documents
是一个对象数组。例如:
[{
title: this.title,
content: this.content,
}, ...
编辑:
我这样做了:
store.fetch = (documents) => {
store.find().then((results) => {
documents = _.map(results, (result) => {
return result.toJSON()
})
console.log(documents)
})
}
正在分配documents
:
[Object, Object, Object, ...]
所以我认为它不会将此数组分配给this.documents
。也许变量不能成为参数并同时赋值?
答案 0 :(得分:2)
您正在传递this.documents
作为参数并尝试在函数内修改该属性。但是,这不起作用,因为Javascript does not have "pass by reference"。只有"传递价值"。
相反,您可以尝试单独传递对象和属性名称:
store.fetch = (obj, prop) => {
return store.find().then((results) => {
obj[prop] = _.map(results, (result) => {
return result.toJSON()
})
})
}
store.fetch(this, 'documents')
答案 1 :(得分:1)
尝试在.then
之后的store.fetch(this.documents)
阻止中获取结果。并且不要忘记存储上下文
var self = this;
store.fetch(self.documents).then(function () {
console.log(self.documents);
});
或者使用es6
store.fetch(this.documents).then(() => {
console.log(this.documents);
});