2013-07-31 123 views
1

我在一個集合上使用get backbone方法,但是在同一個文件(路由器)中,在一個函數中工作,而在其他函數中工作不起作用。下面的函數不起作用在骨幹網上收集方法

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






    } , 

回答

1

這樣做的原因的異步性質的Ajax(fetch方法)。

在獲取集合之前,將執行登錄到控制檯的行。所以你看到一個錯誤。

1日選項 - 解決錯誤日誌移動到success處理器內部

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

      } 
     }); 
    }, 

第二個選項 - 你可能需要是一個sync事件的集合捆綁..

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

     } 
    }); 
}, 
+0

你忘了把你的第二個選項... – Jack

+0

我誤讀了這個問題.. –

+0

我其實並沒有完全讀過曲也就是說,我只是評論說你寫了「你有兩個選擇」,然後只寫了一個。 – Jack