大家好我一直致力于骨干应用程序,其中添加图像并删除或编辑现有图像。现在我正在使用路由器的各个部分,如画廊,表格,但当我在画廊中编辑的东西回到表格,然后回来我没有得到我之前做过的更改。相反,它显示旧数据。我需要刷新我的意思是CTRL + F5才能看到那些不好的变化。
我尝试了.clear和.reset重置集合和模型但不影响集合中的数据。任何人都可以在我出错的地方帮助我。
以下是Collection和model的代码:
var GalleryImage = Backbone.Model.extend({});
var GalleryImages = Backbone.Collection.extend({
model : GalleryImage,
url: '######',
initialize : function(){
this.reset();
if(this.reset())
{
console.log("model reset", GalleryImage.cid)
}else{
console.log("model not set")
}
this.on("reset", this.loadImagesView,this);
this.on("error", this.errorMessage,this);
//console.log(GalleryImages.get(0))
},
loadImagesView : function(){
//console.log(this);
//console.log(this.CollView.$el);
if(!this.CollView){
this.CollView = new GalleryImagesView({collection:this})
}
this.CollView.render();
},
errorMessage : function(){
jQuery('#imageBlocksDiv').html('<span id="noMsg"><h4>No images to display.</h4></span>');
}
});
对于路由器是:
initGallery : function(){
jQuery('#invset').hide();
jQuery('#imagelist').children().eq(0).append(jQuery('.floor_img').find('#box').css({'z-index':'1','position':'relative','margin-top':'0px','margin-left':'0px'}));
pinterest(undefined);
jQuery("#box").show();
jQuery('#invset').hide();
jQuery('#inventorycontent').hide();
jQuery("#boxnews").hide();
jQuery("#boxzip").hide();
jQuery(".select").attr('style','display:block');
jQuery(".select").attr('id','ugallerygal');
jQuery(".pagetitle").html('Gallery');
var that = this,projectId = jQuery('#ugallerygal').val();
jQuery('#imageBlocksDiv').html('');
var imgObj = new GalleryImages();
//this.reset(imgObj);
imgObj.fetch({data: jQuery.param({projectId: projectId, add:true, reset:true}), success:function(){
console.log(imgObj)
imgObj.trigger("reset");
},
error : function(){
imgObj.collection.trigger("error");
}
});
},
不仅如此,我还有一个部分,当用户点击图像打开图像并点击图像上的任意位置时,可以放置一个点并在该点中添加我在解析中存储的细节,但是更改的值得到已保存但当我返回到图像时,将显示较旧的位置和数字图像,而不是较新的位置和存储在解析中的更新点。我想两个州的问题都是一样的,所以一个解决方案对所有人都有效。
非常感谢任何帮助。提前感谢
感谢你, Santosh Upadhayay
答案 0 :(得分:0)
问题可能在于重置和添加重置侦听器的顺序。尝试更改
this.reset();
if(this.reset())
{
console.log("model reset", GalleryImage.cid)
}else{
console.log("model not set")
}
this.on("reset", this.loadImagesView,this);
this.on("error", this.errorMessage,this);
到
this.on("reset", this.loadImagesView,this);
this.on("error", this.errorMessage,this);
this.reset();
if(this.reset())
{
console.log("model reset", GalleryImage.cid)
}else{
console.log("model not set")
}