2017-02-21 4 views
0

그래서 나는이 같은 할당량 모델이 있습니다emberfire에서 실시간으로 데이터를 얻을 모델을 필터링하는 방법

export default DS.model.extend({ 
quota : DS.attr('number'), 
sellerId: DS.attr('string'), 
buyerId:DS.attr('string') }); 

을 그리고 난 같은 동적 세그먼트와 assignQuota 노선이 있습니다

this.route('assignQuota', {path:'/assignQuota/:buyer_id'} 

및 assignQuota의를 의 .js :

export default Ember.Route.extend({ 
    model(params) { 
    const sellerId = this.get("session").get("uid"); 
    return this.store.query('quota',{ 
    orderBy:'buyerId', 
    equalTo: params.buyer_id 
    }).then(function(quota){ 
     return quota.filterBy('sellerId',sellerId)  
    }); 
    } 
    }); 

내 템플릿 (단순화)에서하면이 같다 :

,
 {{#each model as |quota|}} 
      {{quota.quota}} 

      {{/each}} 

누군가가 데이터를 추가하거나 할당량 모델에서 데이터를 삭제하면 목록에서 자동으로 업데이트되지 않습니다.

템플릿은 브라우저를 새로 고친 후에 새로 고침 만합니다. 재미있는 점은 ember inspector를 사용하여 할당량에 대한 데이터를 검사 할 때 누군가 모델을 변경했지만 템플릿이 변경 사항을 반영하지 않으면 모델이 이미 변경되었음을 알 수 있습니다.

이유는 모델이 변화를 관찰하지 않는다는 것입니다

감사

답변

0

도와주세요.

계산 된 속성을 만들고 관찰자가 모델의 변경 내용을 변경 한 다음 계산 된 값을 사용하여 목록 (each 루프)을 만듭니다. 당신이 동적 세그먼트에 model를 전달하는 경우, transitionToassignQuota 노선을 수행하는 방법에 문제가있다

quotaList: Ember.computed('model.[]', function() { 
    // Your update logic here 
    // return the new value 
}) 
+0

시도했지만 그다지 작동하지 않았다 – marendra

+0

다시 말해서 @locks를 놓아두면 문제를 해결할 수 있습니다. –

+1

여전히 업데이트되지 않지만'store.query'는 @kumkanillam에 언급 된 라이브 배열을 반환하지 않습니다. – locks

2

는, 다음은 model 훅을 호출 건너 뜁니다과 동일 model 데이터를 렌더링합니다.

+0

이것은 무엇을 사용하고 있습니다 : this.transitionToRoute ("seller.assignQuota", params.user_id); – marendra

+1

@ user3720044'store.query'는 라이브 배열이 아니므로 상점에 변경 사항이있을 때 자동으로 업데이트되지 않습니다. 'transitionToRoute' 메소드를 통해 트랜지션을 할 때'model' 훅을 호출해야합니다. 그때 그때 당신은 신선한 데이터를 얻을 것이다 전화. – kumkanillam

+0

'누군가 모델을 변경하면 모델이 이미 바뀌었지만 템플릿은 변경 내용을 반영하지 않습니다. '-> 따라서 라이브 배열을 반환하기 때문에'findAll' 또는'peekAll'을 사용할 때만 템플릿에서 자동으로 업데이트됩니다 – kumkanillam