2014-04-02 4 views
0

저는 집, 연락처 및 지불이라는 세 가지 주 템플리트가있는 ember/rails 애플리케이션이 있습니다. 연락처 및 결제 템플릿 모두 연락처 배열이 필요합니다. 이 배열은 외부 API에서 채워 져야합니다. 현재이 템플릿으로 갈 때마다 연락처에 대해 외부 API가 충돌합니다. 이상적으로 나는 사용자가 처음 로그인 할 때 비동기로 api를 치고 싶습니다. 일단이 데이터를 가져오고 필요할 때까지 외부 api를 치지 않고 다시 참조 할 수 있습니다.레일이나 엠버로 외부 API의 데이터를 캐시합니까?

레일을 사용하면 postgres json 열이있는 사용자의 경우 has_one : contacts_list를 쉽게 추가 할 수 있으며 필요한 경우 템플릿을 조건부로 새로 고침 할 때마다 새로 고침 할 수 있습니다. 나는 엠버에서이 문제를 다루는 가장 좋은 방법에 관해서 궁금하다.

+0

ember 데이터 또는 평범한 오래된 아약스를 사용하고 있습니까? – Hrishi

+0

엠버 데이터를 사용하고 있습니다. – mpiccolo

답변

1

'연락처'에 대한 DS.Model을 만들고 연락처 및 지불 모델에 has_many를 사용해야합니다. 그런 다음 'async : true'를 지정할 수 있습니다.

DS.hasMany('contact', {async: true}), 

이렇게하면 연락처가로드되지 않은 경우 비동기식으로로드됩니다. 로드 된 경우로드 된 연락처 만 반환합니다.

다음과 같은 모델이 있다고 가정합니다 : 연락처, 지불.

+0

예 저는 그 모델을 갖고 있지만 실제로는 currentUser has_many 연락처와 지불금을 가지고 있습니다. 예를 들어 currentUser에서 async : true has_many 관계를 설정하고 rails 연락처 색인 작업에이 코드가 'Venmo.new (current_user.venmo_token, current_user.venmo_id) .get_contacts.to_json'이있는 경우이 메소드는 한 번 치고 엠버에 캐쉬 된 적이 있습니까? – mpiccolo

+1

'currentUser', 'contacts'및 'payments'와 같은 모델이 있고 모델에 지정된 연락처와 지불에 has_many가있는 경우 해당 모델에서 async true를 지정하면 코드가 무언가에 액세스하려고 시도 할 때만로드됩니다 예를 들어, currentUser.payments.length와 같이, 지불이 아직로드되지 않은 경우 지불/색인 조치에 대한 ajax 요청이 작성됩니다. – Hrishi

1

이 캐싱 유형을 수행하는 경로에서 setupController 메서드를 사용했습니다. 콘텐츠가 이미 사용 가능한지 확인하고 콘텐츠가 없으면로드하십시오. 다음과 같이 입력하십시오 :

관련 문제