2015-10-06 3 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' не является вашим основным идентификатором, не так ли? то в вашем '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