Ember - 在操作中,结果已定义,在父操作中记录的相同操作的返回值是否未定义?为什么?

时间:2016-06-12 17:05:29

标签: ember.js undefined ember-components

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

我在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中记录了任何参数,它们都设置正确。 变量集合也只是被推送“未定义”。

1 个答案:

答案 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);
   }
}