我有一个主干视图,除其他外,它执行一个ajax调用,获取用户的日期输入(从和到,从js datepicker小部件),相应的django视图根据这些输入查询数据库并返回新的json-ed数据。现在,在成功时,我尝试将新数据附加到 el,但 el 也会保留初始数据。更重要的是,每次我选择新日期时,都会在模板上的前一个div 下方添加新的div。我应该如何解决这个问题?
我或多或少是这样做的:
' TestView = Backbone.View.extend ({ template: _.template($("#test-template").html()), url: $("#test-url").data('url'),
render: function() {
var template = this.template;
var url = this.url;
var el = $(this.el);
var _this = this;
var currentDate = new Date();
var day = currentDate.getDate();
var month = currentDate.getMonth() + 1;
var year = currentDate.getFullYear();
cur_date = month + "/" + day + "/" + year;
var m = month - 1 ;
prev_date = m + "/" + day + "/" + year;
data_send = {period_from: prev_date, period_to:cur_date};
$.get(url, data_send, function(data) {
var pigs = $.parseJSON(data);
el.append(template(pigs));
_this.event();
$( ".date-popup" ).datepicker();
});
return this;
},
event: function(){
_this = this;
var $to = $('#to_id');
var template = this.template;
var url = this.url;
var el = $(this.el);
$to.on('change', function(event) {
var from = $('#from_id').val();
var to = $('#to_id').val();
$.ajax({
type:"GET",
url :url,
data: {
period_from: $('#from_id').val(),
period_to: $('#to_id').val()
},
datatype:"json",
error:function(data){alert('Error:'+data);},
success:function(data){
var pigs = $.parseJSON(data);
el.append(template(pigs));
_this.event();
}
});
});
}
});'
不希望显示旧数据,那么可能会使用el.html(template(pigs))
而不是el.append(template(pigs))
会有所帮助。