每次应用程序在Backbone.js中切换URL时,我都需要运行一个函数,并且我需要知道URL已更改为的主题标签。我假设有一个我可以绑定(bind)到的事件,但我一直无法弄清楚要绑定(bind)到哪个事件和哪个对象。具体来说,我想将新URL发送到分析应用程序。 最佳答案 我知道这是一篇旧文章,但就像@kirk所建议的那样,Backbone.js已经构建了它。Backbone.history.on("all",function(route,router){//console.log(window.location.hash);});我
关于backbone.js的一些新手问题'save和sync.在调用保存/同步功能后,Backbone期望从服务器得到什么类型的响应?收到响应后是否需要进行具体的后处理?backbone如何知道服务器上是否已经存在该模型?从文档中我看到每个模型都有一个isNew检查是否有“id”。所以“id”是来自服务器的id,而“cid”是backbone为每个模型创建的。正确的?如果是这样,服务器通知Backbone模型的id的一般步骤是什么,何时:a)首先创建并同步模型,b)随后在获取模型时,c)或者当模型在页面加载时填充?感谢您的帮助。 最佳答案
删除模型客户端的最佳方法是什么?我不需要担心在服务器端删除它。我如何确保它在所有地方都被删除,避免每一个陷阱,每一个僵尸绑定(bind)。我正在寻找删除和销毁所有内容并确保模型被垃圾收集的指南。谢谢!! 最佳答案 这真的取决于这个模型里面有什么。如果它绑定(bind)到来自其他实例(View/Collection/Models)的事件,您应该手动删除这些事件监听器,因为无法一次删除所有事件。此外,Model.destroy()从任何集合(Backbone文档)中删除模型:Destroymodel.destroy([options])
我正在学习Backbone.js并试图弄清楚是否可以在BackboneView中使用实例变量。我的目标是在实例化View时从外部文件加载View的模板。目前我将它们存储在Backbone应用程序的全局命名空间中的全局变量中,但将模板存储在View的实例变量中会更清晰。目前我是这样设置的:vartemplates={};MessageView=Backbone.View.extend({initialize:function(){$.get('js/Test2Templates.tpl',function(doc){vartmpls=$(doc).filter('template');t
我正在使用backbone.js例如,假设我们有一个“产品”模型和一个“类别”模型,它们具有多对多关系。在我的一个观点中,假设我需要检索所有类别的列表并知道每个类别是否与当前产品模型相关。我是否设置了一个“类别”集合并将它作为我的模型的一个属性,并以某种方式让它访问模型的ID,以便在获取它时,它只获取相关的类别?然后我可以获取所有类别并交叉检查它们,看看哪些是相关的,哪些是不相关的?我不知道最好的方法是什么。我习惯于使用ORM,它在服务器端很容易。 最佳答案 查看backbone-relational.
我有一个Marionette布局,其中有一个区域,里面有一个View。我怎样才能获得对该View的引用?例如:varlayoutView=Backbone.Marionette.Layout.extend({regions:{myRegion:'.some-element'},initialize:function(){this.render();this.myView.show(newsomeView());},test:function(){varview=this.myRegion.get()//orsomethingtoretrievetheview?}});我的意思是,我可以
假设您有一个简单的单页应用程序-无论它是使用Backbone、Angular、Ember还是其他任何工具编写的。您如何告诉屏幕阅读器我们在遵循路线时更改了“页面”?在经典应用程序中,当我从/index.html导航到/about.html时,屏幕阅读器显然会检测到页面更改,并在您重新阅读时会期待。但是在我的Backbone应用程序中,当我遵循一条路线时,我不知道如何触发“重读”。我已经尝试触发我在某处看到的focus事件,但这似乎不起作用。注意:我目前正在使用NVDA/Chrome进行测试。 最佳答案 总的来说,您应该不需要触发“重
只要我尝试做的一件事就能真正简化我现在的生活。我该怎么做:这是我在应用文件中的Viewwindow.ArtView=Backbone.View.extend({template:_.template($('#art').html()),render:function(eventName){varoutput="blablbla";$(this.el).html(this.template({"output":output}));returnthis;}});...//functionthatIwouldliketocallfunctioncallFunction(){console.l
我在Backbone.js模型中遇到了一个奇怪的问题,其中数组成员显示为空白。它看起来像这样:varSession=Backbone.Model.extend({defaults:{//...widgets:[]},addWidget:function(widget){varwidgets=this.get("widgets");widgets.push(widget);this.trigger("change:widgets",this,widgets);},//...//IhaveamethodonthemodeltograbbingamemberofthearraygetWidg
我了解如何将一个系列或一个单独的模型组合在一起。而且我通常可以获得模型的数据来显示。但我完全不清楚如何获取一个集合并获取该集合中的模型列表以显示。我是否应该遍历集合并单独渲染每个模型?这应该是集合渲染功能的一部分吗?或者集合是否只有自己的View,然后我以某种方式将整个集合数据填充到View中?笼统地说,显示模型列表的正常方法是什么? 最佳答案 根据我的经验,最好在CollectionView中保留对每个模型View的引用。我目前正在进行的项目中的这个片段应该可以帮助您更好地理解这个想法:varMyElementsViewClass