在我的应用中,有不同的用户帐户。我想要做的是,显示一个loader.gif直到.fetch()从资源url获取内容+呈现View并隐藏loader当获取完成时。现在,当用户登录时,他的TODO项目列表由Todos.fetch获取并在成功回调时,loader.gif淡出。$("#app").hide();$(".loader").show();Todos.fetch({success:function(){$("#app").show();$(".loader").hide();}});除了那些没有Todo项的用户外,这对所有用户都适用。对于这些用户,不会触发成功回调,loader.gi
我正在开发Backbone应用程序,它可以发出跨域的Restful请求。请求中的嵌套数据结构是必需的,在curl请求中我有该结构:{"site_id":1,"post":{"site_id":1,"provider_id":1,"provider_post_id":1,"created_ts":"12.12.12","post":{"header":"text","caption":"text","image":"http://...jpg"}}}在模型中,我没有嵌套结构,这很舒服,因为我在view(DOM元素创建)中使用了image模型字段。从Backbone应用向服务器发送嵌套数据
我使用Backbone.js作为框架,在我看来我有一些小图像(要删除的垃圾桶、图标等)。当View重新呈现这些图像时闪烁。我已经通过为我不想闪烁的所有内容创建一个新View而不触发它们渲染来解决这个更大的图像。但我想知道是否有另一种方法可以在不将我的观点分解成一堆碎片的情况下做到这一点?这是我呈现我的观点的一般格式:window.SomeView=Backbone.View.extend({initialize:function(){this.model.bind('change',this.render,this);this.template=_.template($('#view-
这是我关于SO的第一个问题,希望我没有搞砸。我已经检查了关于这个问题的其他主题,但它们没有涵盖我遇到的情况。我正在Backbone之上构建一个库来创建移动应用程序。我将所有组件定义为主干View的主要原因是因为我想在滚动时进行内存优化(隐藏内容/从DOM中删除内容)。让我先从最理想的防御开始定义一个基类供其他组件使用,有一些默认我需要在每个组件上使用的属性和一些方便的方法。UI.Component=Backbone.View.extend({viewOptions:['children'],children:[],add:function(child){this.children.pu
我正在尝试获取backbone-relational插件处理任务和消息之间的关联。(一个任务有很多消息)。信息是从一个标准的rails/activerecord站点中提取的,它有一个task_id字段作为外键。问题是,Backbone关系不会用任务模型上的任何消息填充“消息”字段,除非我在反向关系中将键设置为“task_id”……但这意味着,当访问来自Message模型的任务,task_id字段填充了实际的任务对象,而不是被覆盖的'task_id'整数。我猜想有一种简单的方法可以将task_id指定为用于确定父任务的外键,但将该键表示的对象放置在不同的字段中(例如消息对象上的“任务”)
假设我有一个(相当可笑的)书籍模型,其属性看起来像:page:{paragraph:{wordcount:{the:8,at:10}}}我可以像这样绑定(bind)到非常嵌套的值的更改吗?book.on("change:page:paragraph:wordcount:the",...); 最佳答案 Backbone只触发顶级属性名称的change事件。根据CatalogofEvents:"change"(model,options)—whenamodel'sattributeshavechanged."change:[attrib
我很好奇人们是如何处理这种情况的。我有一个应用程序,它在像“/categories”这样的路径上显示了一个类别列表。单击每个类别时,会出现该类别中的产品列表,并且路由会更新为类似“/categories/1/products”的内容。如果我导航一些然后单击后退按钮,我应该能够只呈现前一个类别的产品ListView,而无需重新呈现类别View。但是,我还需要确保当我直接导航到“/categories/2/products”时,会呈现类别列表和产品列表。基本上,这意味着路由器对后退/前进历史导航的响应与直接访问URL的响应不同。是否有针对此类问题的通用解决方案?
我的网络应用程序中有拖放功能。当用户在拖放后释放鼠标时,对象的位置将使用模型上Backbone的save()方法保存到服务器。当服务器响应时,它会使用返回的属性在模型上触发set()。然而,在服务器处理请求时,用户可能已经再次将对象拖到不同的位置。这会导致问题,因为服务器的响应现在将覆盖浏览器中对象的设置。有没有办法阻止Backbone在save()之后从服务器获得响应后执行set()? 最佳答案 之前在做系统时有过类似的用例,尽管那更麻烦,因此我们需要真正重写模型的set()函数。尽管对于这种情况,有几个相对简单的方法可用。您可以
我有一个像这样的非常基本的设置:varMusicModel=Backbone.Model.extend({});varPlaylistCollection=Backbone.Collection.extend({model:MusicModel,events:{'add':'add'},add:function(mdl){//Thisisworkingperfectlyfineevenoutputofmodelconsole.log(mdl);}});varplaylistCollection=newPlaylistCollection();playlistCollection.add
我是一名中级javascript开发人员,试图了解优秀的javascript开发人员如何编写他们的代码,因此我决定开始研究Backbone库作为起点。这是Backbone初始设置的一些代码片段,请帮助我理解它。code1-(function(){varroot=this;}).call(this);是否有任何特定的理由使用调用方法而不是简单地使用(),或者它只是一种编码偏好,如果我必须编写相同的代码,我会做这样的事情。(function(root){})(this);code2-varBackbone;if(typeofexports!=='undefined'){Backbone=e