0

我有一个主干视图,除其他外,它执行一个 ajax 调用,获取用户的日期输入(从和到,来自 js datepicker 小部件),相应的 django 视图根据这些输入查询 db 并返回新的 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();
        }
      });
   });
 }

});`

4

1 回答 1

0

如果您不希望显示旧数据,那么可能使用el.html(template(pigs))而不是el.append(template(pigs))会有所帮助。

于 2013-09-17T12:43:34.850 回答