javascript - get method on collection in backbone -
i'm using backbone method on collection in same file (router),in function works while in other function doesn't work.below function doesn't works
var models = {}; var approuter = backbone.router.extend({ routes: { "": "home", "user/:id":"userdetails", "settings":"settings",//mettere id dell utente loggato "friends":"friends", "mailbox":"mailbox", "landscape":"landscape", "gestione_richieste_amic":"gestione_richieste_amic" }, friends: function(){ console.log("friend_router"); var self=this; models.utenti = new usercollection(); models.utenti.fetch({ success: function(object) { console.log(object); var view=new friendsview({model:object}); self.changepage(view); }, error: function(amici, error) { } }); console.log(models.utenti); var cur_user=parse.user.current().id; console.log(models.utenti.get(cur_user));<--undefined, don't works here console.log(cur_user); } ,
the reason asynchronous nature of ajax
(fetch method).
the line log console executed before collection fetched. see error.
1st option - resolving error moving log inside of success
handler
friends: function () { console.log("friend_router"); var self = this, models.utenti = new usercollection(); models.utenti.fetch({ success: function (object) { console.log(object); var view = new friendsview({ model: object }); self.changepage(view); console.log(models.utenti); var cur_user = parse.user.current().id; console.log(models.utenti.get(cur_user)); console.log(cur_user); }, error: function (amici, error) { } }); },
2nd option - might take bind sync
event on collection..
initialize: function () { this.models.utenti = new usercollection(); this.listento(this.models.utenti, 'sync', this.logcollection); _.bindall(this, 'logcollection'); }, logcollection: function () { console.log(this.models.utenti); var cur_user = parse.user.current().id; console.log(this.models.utenti.get(cur_user)); console.log(cur_user); }, friends: function () { console.log("friend_router"); var self = this; this.models.utenti.fetch({ success: function (object) { console.log(object); var view = new friendsview({ model: object }); self.changepage(view); }, error: function (amici, error) { } }); },
Comments
Post a Comment