Javascript 主干中AJAX请求的模型更改后重新提交

Javascript 主干中AJAX请求的模型更改后重新提交,javascript,jquery,ajax,backbone.js,Javascript,Jquery,Ajax,Backbone.js,我需要一些代码方面的帮助,因为某些原因,我无法在模型更改后让视图重新渲染 var ResultLoanView = Backbone.View.extend({ id:"result", initialize: function(){ this.render(); this.on('submissionMade',this.getData,this) this.model.on('change',this.rende

我需要一些代码方面的帮助,因为某些原因,我无法在模型更改后让视图重新渲染

    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)

      }

    })
var ResultLoanView=Backbone.View.extend({
id:“结果”,
初始化:函数(){
这个。render();
this.on('submissionmake',this.getData,this)
this.model.on('change',this.render,this)
},
模板:u.template(“”),
getData:function(){
var=这个;
$.ajax({
键入:“获取”,
url:“http://zillow.com/webservice/mortgage/CalculateAffordability.htm?",
数据:{
“zws id”:“APIKEY”,
年收入:1000000,
月付款:2000年,
下降:80万,
月出生日期:1500,
比率:6.504,
附表:“每年”,
任期:360,
应收账款收入:36,
incometax:30,
物业税:20,
危险:20000,
采购经理人指数:1000,
输出:“json”
},
数据类型:“jsonp”,
成功:功能(数据){
that.model.attributes=data.response
console.log(that.model)
}
,
错误:函数(结果){
警报(“错误”);
}
})
},
render:function(){
控制台日志(“重新加载”)
var need=this.$el.html(this.template({models:this.model.toJSON()}))
$('body')。追加(需要)
}
})

因此,当从父视图触发SubmissionMake时。这将启动一个
$.ajax
请求。最后,这将返回我想要分配给与
ResultLoanView
关联的模型的数据。由于某种原因,模型没有被更改,因为
initialize
中的侦听器没有重新呈现我的html。我的目标是将数据重新分配给我的模型,这将基于
initialize
中的侦听器重新渲染。有什么想法吗?

我想你需要打电话

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

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