0

很快我就遇到了以下问题:

我在 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 作为对象写入控制台 - 正如预期的那样。

但是,console.log(data) - 在 createData 中 - 将“未定义”写入控制台。

我不尊重异步的任何方面吗?

PS:我还记录了 createSingleData 中的任何参数,它们都设置正确。变量集合也只会被推送“未定义”。

4

1 回答 1

0

您不能从操作中返回值,而是可以从操作中设置属性。

如何从 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);
   }
}
于 2016-06-12T18:37:03.657 回答