2016-06-12 2 views
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 등을 기록 예상대로 콘솔에 개체가 있습니다.

그러나 createData 내 console.log (data)는 'undefined'를 콘솔에 씁니다.

비동기 적 성향의 측면이 있습니까? 존경하지 않았습니까?

P.S .: 또한 createSingleData 내에 모든 매개 변수를 기록했지만 모두 올바르게 설정되었습니다. 변수 컬렉션도 '정의되지 않음'으로 푸시됩니다.

답변

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

내 문제는 내가 계산을하기 때문에 내가 값을 반환해야하는 여러 동작을 가지고있다. – dagopert

+0

모든 액션에서 액세스 할 수있는 액션 외부의 값을 반환 할 수있는 자바 스크립트 함수를 정의 할 수 있습니까? – dagopert

+0

별도의 js 파일에서 createSingleData를 자바 스크립트 함수로 작성하고 해당 파일을 가져온 다음 createSingleData를 호출하여 데이터를 반환 할 수 있습니다. –