2017-09-17 1 views
0

안녕하세요 저는 엠버가 어떻게 작동하는지 조금 혼란스러워합니다. 특정 사용자를위한 작업을 나열하는 앱을 만들고 있습니다. 여기 내 모델 :새로 고침 엠버 모델

import DS from 'ember-data'; 

export default DS.Model.extend({ 
    title: DS.attr('string'), 
    location: DS.attr('string'), 
    date: DS.attr('date'), 
    archive: DS.attr('boolean'), 
    user: DS.attr('string'), 
}); 

작업 목록에 작업을 추가 할 때 사용합니다. 그러나 나는 내 작업 목록에서 모든 작업을 얻을 때를 위해 난 내 경로에서이를 사용

model: function() {  
     return this.store.findAll('task'); 
    } 

내 컨트롤러에이를 추가했습니다 작업에 대한 모든 사용자의 내 필터링 :

filteredModel: Ember.computed('model', function(){ 
     let model = this.get('model'); 

     return model.filter(function(item){ 
      return item.data.user == this.get('session.user.email'); 
     }); 

    }), 

이 모든 것이 정상적으로 작동합니다. 그러나 작업 목록에 새 작업을 추가하면 작업 목록이 업데이트되지 않으므로 페이지를 새로 고쳐야합니다. 내 페이지를 새로 고치지 않고도 자동으로이 작업을 수행 할 수 있습니까?

답변

1

findAll에 의해 반환 된 배열은 라이브 배열이며 항상 저장소의 모든 레코드를 포함합니다. 그러나 CP에 잘못된 종속성 키가 있습니다. 종속 키는 .[] 또는 [email protected]? 중 하나를 포함해야합니다. 그렇지 않으면 배열 변경 사항을 수신하지 않습니다. user 속성을 사용하므로 [email protected]이어야합니다. 또한 현재 사용자를 종속 키에 추가해야합니다.

마지막으로 필터 기능의 this이 필터 기능의 this이며 컨트롤러가 아니기 때문에 CP가 전혀 작동하지 않습니다. 화살표 함수를 사용하거나 this을 변수에 저장해야합니다.

item.data.user도 잘못된 것으로 보입니다. 아마도 item.get('user')이어야합니다.

filteredModel: Ember.computed('[email protected]', 'session.user.email', function(){ 
    return this.get('model') 
     .filter(item => item.get('user') == this.get('session.user.email')); 
}), 
+0

하이 럭스 난 당신이 https://stackoverflow.com/questions/46276924/ember-js- 그것을 확인 할 수있을 것 엠버에 대한 또 다른 문제가 발생했습니다 :

그래서 최종 CP는 nested-forms – jsg

+0

질문과 같은 더 많은 토론을 위해 ember slack 도움말 채널을 체크 아웃해야 할 수도 있습니다. – Lux

관련 문제