我正在启动一个相当大的Backbone项目,现在我正在决定所有关键组件。我四处张望,多次遇到Marionette。我的问题是,什么时候使用Marionette与使用纯Backbone比较合适?我担心的是,在将整个新库添加到等式时,复杂程度会大幅上升,但如果使用Marionette的好处超过它可能值得研究。我不是在寻找基于意见的答案——只是深入了解Backbone在生产环境中的扩展程度以及Marionette增加的重量/复杂性是否值得。是否有某种可量化的方法来确定这一点?Backbone在什么时候无法扩展? 最佳答案 答案将是主观的,
我在Backbone中有一个合并的集合,其中包含照片和相册。为了区分它们,我添加了一个字段type,它是photo或album。当我填充集合时,我在Collection#model方法中创建了不同的模型model:(attrs,options)->switchattrs.typewhen'album'thennewApp.Models.Album(attrs,options)when'photo'thennewApp.Models.Photo(attrs,options)现在我发现了一个奇怪的错误,即添加具有相同ID(假设2)的照片和相册会导致合并。我已经追踪到these源代码中的LO
我正在尝试在我的主干模型上设置一个变体获取方法,该方法将为给定用户获取当前模型。这可从/api/mealplans/owner/{username}/current上的API获得。我写了下面的模型。我注释掉了URLRoot,因为原型(prototype)fetch调用只是使用urlRoot,我想看看它是否覆盖了我以某种方式分部分传递的url参数。varmealPlan=Backbone.Model.extend({name:'MealPlan',//urlRoot:'/api/mealplans',defaults:{},fetchCurrent:function(username,a
我正在尝试熟悉CoffeeScript和backbone.js,但我一定遗漏了一些东西。这个CoffeeScript:MyView=Backbone.View.extendevents:{"click":"testHandler"}testHandler:->console.log"clickhandled"returnfalseview=newMyView{el:$('#test_container')}view.render()生成以下JavaScript:(function(){varMyView,view;MyView=Backbone.View.extend({events:
我是Backbone.js的新手我有一个JSON,如图所示!我看到了一些与Backbone-relational有关的答案,但仍然不明白这一点!如何将此JSON转换为Backbone.js集合/模型??我更新了一个代码,但它没有像预期的那样工作!我看不到模型:我的结构是:[0]:是模型的集合[clefs]+...+[Rest]:是模型的集合(clefs)=>[0]+...+[9]:是模型(标题包含一个字符串,路径也是)非常感谢!!编辑(10.01.12):我的解决方案:window.initModel=Backbone.Model.extend({defaults:{"title":"
我正在尝试使用Backbone.Marionette在渲染和关闭ItemView时设置动画。对于渲染View,这是相当简单的:MyItemView=Backbone.Marionette.View.extend({...onRender:function(){this.$el.hide().fadeIn();}...});这将使我的View在渲染时淡入。但是假设我想在关闭时淡出我的观点。beforeClose:function(){this.$el.fadeOut();//doesn'tdoanything....}这是行不通的,因为该项目在调用this.beforeClose()后立
我对Backbone很感兴趣,因此决定打开一个jsFiddle来玩一玩。不幸的是,我不断收到此错误:Backbone.Model.extendisnotafunction我的代码:varModel=Backbone.Model.extend();我从Backbonetutorial得到这段代码.Thefiddle.我做错了什么? 最佳答案 您需要包括underscore.js在backbone.js之前,就像在你的fiddle的这个更新版本中一样:http://jsfiddle.net/ambiguous/AFmQ2/1/来自fin
基本上我需要的是做这样的事情App.CommentView=Backbone.View.extend({className:function(){if(this.model.get('parent_id')){return'commentcomment-reply';}else{return'comment';}},问题是,传递给className的函数是在View模板的html上下文中执行的,所以我无法调用this.model。有什么方法可以在渲染过程中的此时访问模型?或者我是否需要稍后设置类,例如在render函数中? 最佳答案
为什么我的View没有更新?table,td{border:1pxsolid#000;}varrowTemplate="";/**Viewrepresentingatable*/varTableView=Backbone.View.extend({tagName:'table',initialize:function(){_.bindAll(this,'render','renderOne');if(this.model){this.model.on('change',this.render,this);console.log(this.model);}},render:functio
我需要为我的下一个项目实现一个MVCJavaScript框架,但它既是一个网站,也是一个网络应用程序。是否可以在服务器端公开数据,然后解析URL以显示“JS版本”?(我计划将Rails用于服务器端代码) 最佳答案 我写了一个关于这个主题的小型博客系列......第一部分介绍问题和之前的解决方案,以及目前的解决方案:HTML5的PushState(historyAPI)http://lostechies.com/derickbailey/2011/09/26/seo-and-accessibility-with-html5-pushs