很快,我很快就遇到了以下问题:
我在Ember的组件中有以下两个动作:
createData: function(user) {
let collection = [];
for (let i = 0; i < user.posts.length; i++) {
let data = this.send('createSingleData',user.posts[i], user, 'post');
console.log(data);
collection.push(data);
}
return collection;
},
createSingleData: function(data, user, type) {
let entitySkeleton = {
name: data.place.name,
belongsTo: user.id,
position: {
data.place.location.longitude,
data.place.location.latitude
}
};
console.log(entitySkeleton);
return entitySkeleton;
}
第一个日志 - 在createSingleData中,在返回记录的值之前 - 将entitySkeleton作为Object写入控制台 - 正如预期的那样。
然而,console.log(data) - 在createData中 - 写入&#39; undefined&#39;到控制台。
我不尊重异步的任何方面吗?
P.S .: 我还在createSingleData中记录了任何参数,它们都设置正确。 变量集合也只是被推送“未定义”。
答案 0 :(得分:0)
您无法从操作中返回值,而是可以从操作中设置属性。
how to return values from actions in emberjs
actions: {
PrintSomething: function() {
let obj = [{a: 'raj'}, {a: 'Prudvi'}, {a : 'thimappa'}]
console.log('before', obj);
this.send('returnSomething', obj);
console.log('after calling action', this.get('returnvalue'));
},
returnSomething: function(obj) {
obj.push({a: 'FSDFSDF'})
var data = obj;
this.set('returnvalue', data);
}
}