Django Backbone.js获取加倍的结果

Django Backbone.js获取加倍的结果,django,backbone.js,tastypie,Django,Backbone.js,Tastypie,我正在尝试将Django和tastypie与backbone.js和mustache一起使用。我已经树立了一个学习这些的榜样。当使用以下代码时,我会得到用户加倍的结果: -Id用户名 -1蛋黄 -2达达 -1蛋黄 -2达达 ---我的代码--- //我认为这个tastype调整与问题无关,但我想让您看看//整个代码 window.tastypemodel=Backbone.Model.extend({ 基本url:function(){ var temp_url=Backbone.Model

我正在尝试将Django和tastypie与backbone.js和mustache一起使用。我已经树立了一个学习这些的榜样。当使用以下代码时,我会得到用户加倍的结果:

  • -Id用户名
  • -1蛋黄
  • -2达达
  • -1蛋黄
  • -2达达
---我的代码---

//我认为这个tastype调整与问题无关,但我想让您看看//整个代码
window.tastypemodel=Backbone.Model.extend({
基本url:function(){
var temp_url=Backbone.Model.prototype.url.call(this);
返回(temp_url.charAt(temp_url.length-1)='/'?temp_url:temp_url+'/');
},
url:function(){
返回此.base_url();
}
});
window.tastypecollection=Backbone.Collection.extend({
解析:函数(响应){
this.recent_meta=response.meta |{};
返回response.objects | | response;
}
});
(函数($){
//模型-集合
//使用者
var User=tastypemodel.extend({
url:USERS\uAPI
});
var Users=tastypecollection.extend({
型号:用户,
url:USERS\uAPI
});
//观点
var UsersView=Backbone.View.extend({
render:function(){
//带有ICanHaz.js(ich)的模板
this.el=ich.userRowTpl(this.model.toJSON());
归还这个;
}
});
//主应用程序
var AppView=Backbone.View.extend({
标记名:“tbody”,
初始化:函数(){
this.users=新用户();
this.users.bind('all',this.render,this);
this.users.fetch();
},
渲染:函数(){
//带有ICanHaz.js(ich)的模板
this.users.each(函数(用户){
$(this.el).append(newusersview({model:user}).render().el);
},这个);
归还这个;
}
});
var app=new AppView();
$('#app').append(app.render().el);
})(jQuery);

我想说您触发了两次渲染,因为您的视图正在侦听所有事件,请尝试将其绑定以重置并查看其运行情况:

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

非常感谢。它解决了倍增问题。但是我在AppView的渲染函数中做了一个小测试,并编写了一个
alert('test')
函数。它调用警报两次意味着它进入渲染两次这是预期的行为吗?是的,因为您仍在调用渲染两次,第一次调用
$('#app').append(app.render().el)
和第二个
this.users.bind('reset',this.render,this)
这是预期的方式,因为在第一次调用中尚未提取集合,因此它呈现集合模型的集合是绑定到重置事件的集合,重置事件在提取集合后触发。