javascript - 在 Backbone 中的 AJAX 请求中模型更改后重新呈现

标签 javascript jquery ajax backbone.js

由于某些原因,我的代码需要一些帮助,我无法让我的 View 在模型更改后重新呈现。

    var ResultLoanView = Backbone.View.extend({
      id:"result",
      initialize: function(){
        this.render();
        this.on('submissionMade',this.getData,this)
        this.model.on('change',this.render,this)
      },

      template: _.template("<% _.each(models, function(data,index) { %><div><%= index %></div> <%= data %><% }); %>"),

      getData: function(){
             var that = this;
             $.ajax({
              type: "GET",
              url:"http://zillow.com/webservice/mortgage/CalculateAffordability.htm?",
              data: {
                "zws-id":"APIKEY",
                annualincome: 1000000,
                monthlypayment: 2000,
                down: 800000,
                monthlydebts: 1500,
                rate: 6.504,
                schedule: "yearly",
                term: 360,
                debttoincome: 36,
                incometax: 30,
                propertytax: 20,
                hazard: 20000,
                pmi: 1000,
                output: "json"
              },
              dataType: "jsonp",
              success: function(data) {
                that.model.attributes = data.response
                console.log(that.model)
                  }
              ,
              error: function(result) {
                  alert("Error");
              }
          })
      },
      render:function(){
        console.log("rerender")
        var need = this.$el.html(this.template({models:this.model.toJSON()}))
        $('body').append(need)

      }

    })

所以当 submissionMade 从父 View 被触发时。这将启动一个 $.ajax 请求。最后,这会带回我想分配给使用 ResultLoanView 的关联模型的数据。由于某种原因,模型没有被更改,因为 initialize 中的监听器没有重新呈现我的 html。我的目标是将数据重新分配给我的模型,该模型将根据 initialize 中的监听器重新呈现。有什么想法吗?

最佳答案

我相信你需要打电话。

that.model.set(data.response)

而不是直接更改.attributes。文档提到了 set() 的更改事件。

还有一个旁注,查看 this.listenTo()model.on() 之间的区别。许多实例最好使用 listenTo 来防止内存泄漏。

关于javascript - 在 Backbone 中的 AJAX 请求中模型更改后重新呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31363820/

相关文章:

javascript - 在 JavaScript 中创建 DIV 图像 (GIF/PNG)

javascript - 如何禁用 ASP.NET 中的按钮

c# - AJAX仅适用于页面刷新

php - 在 keyup 事件上获取 codeigniter 中文本框的当前值

javascript - Angularjs Protractor 设置窗口大小大于屏幕?

javascript - 使用 JS 或 jQ 在悬停时突出显示包含相同信息的表格行

javascript - jquery keydown 与正则表达式绑定(bind)不验证撇号和句点

javascript - OwlCarousel 2 的动态自动播放时间

javascript - 将带有换行符和制表符的 JavaScript 字符串添加到 HTML 元素

javascript - jQuery.each 在可用时不依赖 Array.forEach 是有原因的吗?