Javascript 主干:在等待服务器响应时使用加载映像

Javascript 主干:在等待服务器响应时使用加载映像,javascript,backbone.js,Javascript,Backbone.js,Flow-in应用程序在两个不同型号上同时有两个后端调用。 如果情况正常,第一个用户登录到站点,另一个fetch()获取详细信息。 这样就有两种模式 登录模型 仪表板集合 登录视图如何将save()请求发送到登录模型,如果成功,它将路由到getCampaignsLoginView login: function(e) { e.preventDefault(); this.model.set({ "email": $('#email').val(), "password

Flow-in应用程序在两个不同型号上同时有两个后端调用。
如果情况正常,第一个用户登录到站点,另一个
fetch()
获取详细信息。 这样就有两种模式

  • 登录模型
  • 仪表板集合
  • 登录视图如何将
    save()
    请求发送到登录模型,如果成功,它将路由到
    getCampaigns

    LoginView

    login: function(e) {
        e.preventDefault();
      this.model.set({
        "email": $('#email').val(),
        "password": $('#password').val()
      });
      this.model.save({},{
        success: function(model, response, options){
            Backbone.history.navigate('getCampaigns', {trigger: true});
        }
      });
    }
    
    路由器

    getCampaigns: function() {
            $('.container').html('<img src="../public/assets/images/spinner.gif"/>');
            dashboardList.fetch();
            dashboardListView.render();
            $('.container').html(dashboardListView.el);
        }
    
    getCampaigns:function(){
    $('.container').html('');
    dashboardList.fetch();
    dashboardListView.render();
    $('.container').html(dashboardListView.el);
    }
    
    不确定如何应用此加载图像
    $this.html(“”)

    首先,在呈现视图之前,您必须等待集合被提取:

    dashboardList.fetch({
        success: function() {
            dashboardListView.render();
        }
    });
    
    var DashboardListView = Backbone.View.extend({
        initialize: function() {
            this.listenTo(this.collection, 'reset', this.render);
        }
    });
    
    或者在你看来:

    dashboardList.fetch({
        success: function() {
            dashboardListView.render();
        }
    });
    
    var DashboardListView = Backbone.View.extend({
        initialize: function() {
            this.listenTo(this.collection, 'reset', this.render);
        }
    });
    
    您可以在代码中的某个位置:

    $(document).ajaxStart(function(){
        $('.container').html('<img src="../public/assets/images/spinner.gif"/>');
    });
    $(document).ajaxStop(function(){
        $('.container').empty();
    });
    
    $(文档).ajaxStart(函数(){
    $('.container').html('');
    });
    $(文档).ajaxStop(函数(){
    $('.container').empty();
    });
    
    为什么不在获取仪表板列表之前显示图像?这是如何工作的?我是主干网新手。请将其放在获取行之前:$('some_selector').html(“”);按照您的建议更新路由器代码,但运气不佳。@HimanshuYadav,您想在用户点击登录按钮之前显示加载程序吗?如果是这样,请将添加的代码放在登录函数的model.save()之前。另外,不需要设置和保存,只需使用save并传递与使用set函数相同的数据。它不适用于主干模型的所有ajax调用吗?是的,不仅适用于主干,而且适用于所有ajax调用。这不是您想要的吗?尝试更改
    this.listenTo(this.collection,'reset',this.render)
    this.listenTo(this.collection,'sync',this.render)