我在集合上使用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);






   }   ,

最佳答案

造成这种情况的原因是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) {

         }
     });
 },

07-28 03:52
查看更多