在模板上添加了新的$ el,并在Backbone View中以ajax成功返回了数据

时间:2013-09-17 11:29:19

标签: javascript django backbone.js

我有一个骨干视图,除其他外,它执行ajax调用,获取用户的日期输入(来自和来自js datepicker小部件),相应的django视图根据这些输入查询数据库并返回新的json数据。现在,在成功的时候,我尝试将新数据附加到el,但el也保留了最初的数据。更重要的是,每次我选择新日期时,都会在模板上的前一个下方添加一个新的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();
        }
      });
   });
 }

});`

1 个答案:

答案 0 :(得分:0)

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