0

すぐに次の問題があります。

Ember のコンポーネント内に次の 2 つのアクションがあります。

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 に答える