Ember.js: маршрут, возвращающий несколько моделей, включая обещание, выдает ошибку

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

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):

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 здесь - полностью открытый исходный код. Пожалуйста помоги.

1 ответ

Решение

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

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

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

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

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

Задача решена. Хотелось бы, чтобы сообщение об ошибке было более понятным.

Другие вопросы по тегам