1

我在一个集合上使用get主干方法,但在同一个文件(路由器)中,在一个函数中工作,而在其他函数中不起作用。在函数下面不起作用

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






   }   ,
4

1 回答 1

1

原因是(获取方法)的异步性质。Ajax

您登录到控制台的行将在获取集合之前执行。所以你会看到一个错误。

第一个选项- 解决错误是将日志移动到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) {

         }
     });
 },
于 2013-07-31T19:58:51.780 回答