2015-02-06 68 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不確定是不是一個函數類型錯誤:未定義的是不是一個函數」

回購是GitHub here - 完全開源。請幫忙。

回答

1

哈哈哈....我意識到自己的錯誤。這是我不讀正確的錯,它讓我失去了2天左右我的生活。好吧。

RSVP.Hashes初始化是這樣的:

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

不喜歡我做的:

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

問題解決了。我希望錯誤報告更清晰。