【问题标题】:Ember - Within action, result is defined, returnvalue of same action logged in parent action is undefined? Why?Ember - 在操作中,结果已定义,在父操作中记录的相同操作的返回值未定义?为什么?
【发布时间】:2016-06-12 17:05:28
【问题描述】:

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

我在 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 中 - 将“未定义”写入控制台。

有没有我不尊重异步性的任何方面?

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

【问题讨论】:

    标签: ember.js undefined ember-components


    【解决方案1】:

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

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

    【讨论】:

    • 我对这个解决方案的问题是,我有多个执行计算的操作,因此我需要返回一个值。
    • 是否有可能定义一个 javascript 函数,该函数可以在所有操作中都可以访问的操作之外返回值?
    • 您可以将 createSingleData 作为 javascript 函数写入单独的 js 文件并导入该文件,然后调用 createSingleData 将返回数据。
    猜你喜欢
    • 1970-01-01
    • 2021-04-28
    • 2019-05-17
    • 2018-10-14
    • 1970-01-01
    • 2018-03-25
    • 2019-12-08
    • 1970-01-01
    • 2022-01-21
    相关资源
    最近更新 更多