2013-04-11 64 views
0

我有从服务器收集数据骨干型号:骨干提取过程

Job.Models.Response = Backbone.Model.extend({ 
    defaults: { 
    'authStatus': false, 
    'id': '1', 
    'name': 'name', 
    }, 

     urlRoot: '/static/js/public/json/' 
    }); 

我有数据-ID = “从/静态/ JS /公共/ JSON/ID” 按钮。

Job.Views.Response = Backbone.View.extend({ 
    el: '.ra-response-button', 

    events: { 
     "click": "load" 
    }, 

    load: function() { 

     var info = this.$el.data(); 

     this.model.set({ id: info.id}); 
     this.model.fetch(); 

     if (this.model.attributes.authStatus === false) { 
      console.log('Register') 
     } 
     else { 
      console.log('Unregister') 
     } 
    } 

}); 

如果我CONSOLE.LOG我的模型后取出,其不要更新,但数据获取成功。 这里可能会出现什么样的问题?

在这里,我的init我们的插件:

var responseModel = new Job.Models.Response; 
var response = new Job.Views.Response({ model: responseModel }); 

回答

0

我解决我的问题。最后查看。

Job.Views.Response = Backbone.View.extend({ 
    el: '.ra-response-button', 

    events: { 
     "click": "load" 
    }, 

    load: function() { 
     var that = this; 

     var info = that.$el.data(); 

     that.model.set({ id: info.id}); 
     that.model.fetch({ 
      success: function() { 
       if (that.model.attributes.authStatus === true) { 
        new Job.Views.ResponseForm({ model: that.model }) 
       } 

       else { 
        new Job.Views.ResponseAuth({ model : that.model }) 
       } 
      }, 

      error: function() { 
       alert('Error, repeat please.') 
      } 
     }); 
    } 
}); 
+0

很高兴你知道了。您始终可以将成功和错误回调传递给fetch()和save(),但通常更强大的附加回调函数的方式是在获取或保存完成时调用的,它利用了返回的Deferred对象。 fetch()和save()都返回一个jQuery延迟对象,允许你做''.when(that.model.fetch())。done(function(){/ *在这里做某事* /});'' - 请记住,使用$ .when()允许您传递尽可能多的延迟对象,并等待它们全部完成。我经常使用它与主干。 – 2013-04-11 05:50:22