2015-10-06 73 views
1

我有一个显示挑战列表的路线,当我创建新的挑战时,记录被保留,但是当我转换回路线时,挑战列表的模型不会更新。有什么我失踪?Ember模型未更新

//new.js 
var challenge = this.store.createRecord('challenge', { 
      name_en: this.get('model.name_en'), 
      name_fr: this.get('model.name_fr'), 
      description_en: this.get('model.description_en'), 
      description_fr: this.get('model.description_fr'), 
      end_date: this.get('model.end_date'), 
      start_date: this.get('model.start_date'), 
      points_cap: this.get('model.points_cap'), 
      points_goal: this.get('model.points_goal'), 
      challenge_type: 1, 
      short_description_en: this.get('model.short_description_en'), 
      short_description_fr: this.get('model.short_description_fr'), 
      excluded_activities: excluded 
     }); 

     // Persist record. 
     challenge.save().then((challenge) => { 
      this.transitionToRoute('challenges'); 
     }).catch((error) => { 
      this.handleError(error, 'error.system_error'); 
     }); 

//router.js 
Router.map(function() { 
    this.route('challenges', function() { 
    this.route('new'); 
    this.route('challenge', { 
    path: ':challenge_id' 
}, function() { 
    this.route('delete'); 
    this.route('edit'); 
}); 

});

//challenges.js 
import Ember from 'ember'; 
import AuthenticatedRouteMixin from 'simple-auth/mixins/authenticated-route-mixin'; 
import UserProfile from '../models/user-profile'; 

export default Ember.Route.extend(AuthenticatedRouteMixin,{ 

userProfile: UserProfile.create(), 

model: function() { 
    return this.store.query('challenge', {league_id: this.get('userProfile.league_id')}); 
} 

});

//new challenge payload 
{ 
"activity_exclusion_list":[ 

], 
"challenge_type":1, 
"challengeUrl":null, 
"end_date":"31-10-2015", 
"number_participants":null, 
"number_teams":null, 
"points_cap":null, 
"points_goal":null, 
"start_date":"01-10-2015", 
"leagueId":"1", 
"teams":[ 

], 
"name_lang":{ 
    "en":"New Challenge ", 
    "fr":null 
}, 
"description_lang":{ 
    "en":"New Challenge", 
    "fr":null 
}, 
"short_description_lang":{ 
    "en":"New Challenge", 
    "fr":null 
} 

}

//response from new challenge 
{ 
"challenge_type":"Individual", 
"description":" ", 
"description_fr":null, 
"description_lang":{ 
    "en":"New Challenge", 
    "fr":null 
}, 
"challengeUrl":" ", 
"start_date":"01-10-2015", 
"end_date":"31-10-2015", 
"name":" ", 
"name_fr":null, 
"name_lang":{ 
    "en":"New Challenge ", 
    "fr":null 
}, 
"points_cap":0, 
"points_goal":0, 
"short_description":" ", 
"short_description_fr":null, 
"short_description_lang":{ 
    "en":"New Challenge", 
    "fr":null 
}, 
"number_participants":0, 
"number_teams":0, 
"teams":[ 

], 
"challenge_id":265, 
"activity_exclusion_list":[ 

], 
"leagueId":1 

}

+0

乍一看似乎没问题。你可以提供你的挑战路线,看看你是如何检索模型? –

+0

当然你在这里 – jpoiri

+0

我假设你正在使用'this.store.query'因为'league_id'不是你的主体id,对吧?那么在你的'createRecord'中,你在哪里设置'league_id'? –

回答

0

在你的挑战路线你尝试过使用this.store.filter呢?问题可能是查询函数只返回一个RecordArray,而过滤器返回一个Live RecordArray,它会在承诺(在这种情况下是成功保存)解析后更新模板和其他所有内容。

model: function() { 
    return this.store.filter('challenge', {league_id: this.get('userProfile.league_id')}, function() { 
     // We're not actually filtering, so just return true for everything 
     return true; 
    }); 
} 

我有同样的问题,这原来是解决方案,希望它有帮助!

Ember Docs reference

+0

谢谢,究竟是什么是我的问题 – jpoiri