Ember.js 模板中显示重复记录

Ember.js 模板中显示重复记录,ember.js,firebase,ember-data,emberfire,Ember.js,Firebase,Ember Data,Emberfire,我有一个用Ember JS构建的调查应用程序和一个用Emberfire适配器构建的Firebase后端 以下是我的用户模型的相关部分: //app/models/user.js export default DS.Model.extend({ name: DS.attr(), sessionuid: DS.attr(), surveysToTake: DS.hasMany('survey', { async: true, inverse: 'respondents' }), su

我有一个用Ember JS构建的调查应用程序和一个用Emberfire适配器构建的Firebase后端

以下是我的用户模型的相关部分:

//app/models/user.js
export default DS.Model.extend({
  name: DS.attr(),
  sessionuid: DS.attr(),
  surveysToTake: DS.hasMany('survey', { async: true, inverse: 'respondents' }),
  surveysCreated: DS.hasMany('survey', { async: true, inverse: 'creator' }), 
  responseSetsSubmitted: DS.hasMany('response-set', {async: true, inverse: 'respondentid'}),
  respSetSurveyLookup: DS.attr({defaultValue: function() { return []; }}) 
});
和my responseSet(来自用户的响应集合)

调查模型如下所示:

//app/models/survey.js
export default DS.Model.extend({
  title: DS.attr(),
  questions: DS.hasMany('question', { async: true, inverse: 'survey' }),
  respondents: DS.hasMany('user', { async: true, inverse: 'surveysToTake'}),
  responseSets: DS.hasMany('response-set', { async: true, inverse: 'survey' })
});
现在,当创建一个用户时,我们会这样做

//routes/addusers.js (in the actions hook after getting properties from the controller)

var user = store.createRecord('user', {
            id: userData.uid,
            name: name   
          });
var responseSet = store.createRecord('response-set', {
            survey: survey,
            respondentid: user
          });

        user.setProperties({
          'respSetSurveyLookup': [{'surveyId': _this.currentModel.get('id'),
                                  'respSetId': responseSet.get('id')}],
          'surveysToTake': [_this.currentModel]                                        
            });
_this.currentModel.get('respondents').pushObject(user);
Ember.RSVP.all([user.save(), _this.currentModel.save(), responseSet.save()])
   .then(function(){
      controller.setProperties({ multipleUsers: '', showAddUsers: false});
});
用户按预期添加。但是,在我的模板(显示在与“添加用户”部分相同的路由上)中,相同的记录会显示多次

其他信息:

  • 我使用的是Ember 1.13.11和Ember数据1.13.11以及EmberFire 1.6.3
  • 刷新页面或重新加载(使用“location.reload()”)会导致 用户记录将按预期显示

这可能与一个问题有关,将来升级余烬数据可能会解决这个问题。然而,在此期间,我能做些什么来处理这个问题吗

_此.currentModel.get('responders').pushObject(用户);你怎么能做这样的事?这不是承诺吗?@kristjanreinhold。。。即使我执行_this.currentModel.get('responders').then(函数(responders){responders.pushObject(user);}),它的工作原理也是一样的_this.currentModel.get('responders').pushObject(用户);你怎么能做这样的事?这不是承诺吗?@kristjanreinhold。。。即使我执行_this.currentModel.get('responders').then(函数(responders){responders.pushObject(user);}),它的工作原理也是一样的;
//routes/addusers.js (in the actions hook after getting properties from the controller)

var user = store.createRecord('user', {
            id: userData.uid,
            name: name   
          });
var responseSet = store.createRecord('response-set', {
            survey: survey,
            respondentid: user
          });

        user.setProperties({
          'respSetSurveyLookup': [{'surveyId': _this.currentModel.get('id'),
                                  'respSetId': responseSet.get('id')}],
          'surveysToTake': [_this.currentModel]                                        
            });
_this.currentModel.get('respondents').pushObject(user);
Ember.RSVP.all([user.save(), _this.currentModel.save(), responseSet.save()])
   .then(function(){
      controller.setProperties({ multipleUsers: '', showAddUsers: false});
});