ember.js - Ajax without ember data - Uncaught TypeError: Object #<Object> has no method 'forEach' -


i'm attempting build non blocking async call in ember.js app without using ember data.

i have following ember.js model:

app.player = ember.object.extend({     id: '',     alias: '',     name: '',     twitterusername: '',     isfeatured: '' });  app.player.reopenclass({     getplayers: function () {         var players = ember.arrayproxy.create({ content: [] });         $.getjson("/api/players").then(function (response) {             response.foreach(function (p) {                 players.pushobject(app.player.create(p));             });         });         return players;     } }); 

and calling follows in route:

app.indexroute = ember.route.extend({     model: function (params) {         return app.player.getplayers();     } }); 

for reason getting following javascript error:

uncaught typeerror: object # has no method 'foreach'

i've tried few variants have seen around nothing seems work. appreciated...

edit - found solution darshan, here's working code:

app.player.reopenclass({     getplayers: function () {         var players = [];         $.ajax({             url: "/api/players",         }).then(function (response) {             response.players.foreach(function (player) {                 var model = app.player.create(player);                 players.addobject(model);             });         });         return players;     } }); 

your response.foreach suggests expecting json response body array. wrapped in root element players or data so.

{   "players": [...] } 

if case need use foreach on root element response.players.foreach.

you want restructure code return promise directly. ember router pause until json loaded , proceed after finishes. this,

getplayers: function () {   return $.getjson("/api/players").then(function (response) {     var players = ember.arrayproxy.create({ content: [] });     response.players.foreach(function (p) {       players.pushobject(app.player.create(p));     });      return players;   }); } 

returning players resolve promise. , ember understands when promise resolves result model.


Comments

Popular posts from this blog

php - Calling a template part from a post -

Firefox SVG shape not printing when it has stroke -

How to mention the localhost in android -