Backbone.js获取加倍的结果

时间:2013-03-11 12:25:04

标签: django backbone.js tastypie

我正在尝试使用带有backbone.js和小胡子的Django和tastypie。我已经建立了一个研究这些的例子。使用以下代码时,我得到的用户结果加倍:

  • -Id用户名
  • -1 yol
  • -2 dada
  • -1 yol
  • -2 dada

---我的代码---

// I think this tastypie adjustment is not related with the problem but i want you to see the //whole code

window.TastypieModel = Backbone.Model.extend({
        base_url: function() {
          var temp_url = Backbone.Model.prototype.url.call(this);
          return (temp_url.charAt(temp_url.length - 1) == '/' ? temp_url : temp_url+'/');
        },

        url: function() {
          return this.base_url();
        }
    });

    window.TastypieCollection = Backbone.Collection.extend({
        parse: function(response) {
            this.recent_meta = response.meta || {};
            return response.objects || response;
        }
});


(function($){



// MODELS-COLLECTIOS
  //USERS
  var User = TastypieModel.extend({
      url: USERS_API
  });

  var Users = TastypieCollection.extend({
      model: User,
      url:USERS_API
  });



//VIEWS
  var UsersView = Backbone.View.extend({
    render: function(){
         // template with ICanHaz.js (ich)
        this.el = ich.userRowTpl(this.model.toJSON());
        return this;
       }
  });





//main app
  var AppView = Backbone.View.extend({
      tagName: 'tbody',
      initialize: function() {
          this.users = new Users();
          this.users.bind('all', this.render, this);
          this.users.fetch();
      },

      render: function () {

          // template with ICanHaz.js (ich)
          this.users.each(function (user) {
             $(this.el).append(new UsersView({model: user}).render().el);
          }, this);



          return this;
      }
  });

  var app = new AppView();
  $('#app').append(app.render().el);






})(jQuery);

1 个答案:

答案 0 :(得分:2)

我会说你要渲染两次渲染,因为你的视图正在监听所有事件,而是尝试绑定它只是为了重置并看看它是怎么回事:

initialize: function() {
  this.users = new Users();
  this.users.bind('reset', this.render, this);
  this.users.fetch();
},