2015-02-06 1 views
1

Я пытаюсь вернуть несколько моделей для маршрута, и, да, я использую RSVP.Hash (GitHub link):ember.js: путь возвращения несколько моделей, включая обещание, дает ошибку

App.GamesIndexRoute = Ember.Route.extend({ 
    model: function() { 
     return new Ember.RSVP.Hash({ 
      player: App.LocalPlayer.singleton(this.store), 
      games: [{id: 1, name: "Game 1"}, {id: 2, name: "Game 2"}] 
     }); 
    }, 

    setupController: function(controller, models) { 
     this._super(controller, models); 
     controller.set("player", models.player); 
    } 
}); 

В проблема в том, один из объектов исходит из обещания себя, как я хочу, чтобы найти только первый объект из этой модели (GitHub link):

App.LocalPlayer = DS.Model.extend({ 
    name: DS.attr("string"), 
    playerId: DS.attr("string") 
}); 

App.LocalPlayer.singleton = function (store) { 
    return new Ember.RSVP.Promise(function (resolve, reject) { 
     store.find("localPlayer").then(function (things) { 
      var p = things.get("firstObject"); 
      if(!p) { 
       p = store.createRecord("localPlayer"); 
      } 
      resolve(p); 
      reject({error: "Error loading LocalPlayer"}); 
     }); 
    }); 
}; 

Когда я пытаюсь перейти на маршрут games.index после создания объект LocalPlayer, он говорит: «Ошибка при обработке маршрута: games.index undefined не является функцией TypeError: undefined не является функцией "

Репо находится на GitHub here - полностью с открытым исходным кодом. Пожалуйста помоги.

ответ

1

Hahaha .... Я осознал свою ошибку. Это была моя ошибка за то, что я не читал правильно, и это заставило меня потерять около двух дней моей жизни. Ну что ж.

RSVP.Hashes инициализируются так:

return Ember.RSVP.hash({ ... })

НЕ так, как я делал:

return new Ember.RSVP.Hash({ ... })

Проблема решена. Я хочу, чтобы отчет об ошибках был более четким.

Смежные вопросы