我有一个定义的模型和集合: var Box = Backbone.Model.extend({ defaults: { x: 0, y: 0, w: 1, h: 1, color: "black" } }); var Boxes = Backbone.Collection.extend({ model: Box }); 当这个集合被模型填充时,我需要一个由Box模型组成的新的Boxes集合,它具有包含在完整集合中的特定颜色属性,我这样做: var sorted = boxes.groupBy(function(box) { return box.get("color"); }); var red_boxes = _.first(_.values(_.pick(sorted, "red"))); var red_collection = new Boxes; red_boxes.each(function(box){ red_collection.add(box); }); console.log(red_collection); 这工作,但我觉得有点复杂和不足。 有没有办法以更简单的方式做同样的事情? 这里是我描述的代码: http : //jsfiddle.net/HB88W/1/
我有一个叫做Pannel的视图,它只是一个closuresbutton的背景。 我想把这个观点扩展到一个叫做PannelAdvanced视图。 我将如何与backbone.js做到这一点? 现在所有的例子都有Backbone.View.Extend但是只是扩展了Backbone.View ; 我想扩展我的PannelView 。
我有一个模型与几个对象: //Model Friend = Backbone.Model.extend({ //Create a model to hold friend attribute name: null, }); //objects var f1 = new Friend({ name: "Lee" }); var f2 = new Friend({ name: "David"}); var f3 = new Friend({ name: "Lynn"}); 还有,我将把这些朋友对象添加到一个集合中: //Collection Friends = Backbone.Collection.extend({ model: Friend, }); Friends.add(f1); Friends.add(f2); Friends.add(f3); 现在我想根据朋友的名字得到一个模型。 我知道我可以添加一个ID属性来实现这一点。 但我认为应该有一些更简单的方法来做到这一点。
我一直在尝试使用Backbone.js的本地存储模块(https://github.com/jeromegn/Backbone.localStorage)。 据我了解,这重载Backbone.sync,并因此停止推送到服务器的主干(?)。 理想情况下,我想将数据传回服务器,并在线时在本地保存,并在离线状态下使用本地存储(您知道,完美的应用程序)。 我还没有find任何文件。 Backbone.localStorage是这个的一部分吗? 有没有人能够build立这种情况? 这是怎么做的? (请告诉我,我不必自己动手。) 谢谢。
我可以成功地做到这一点: App.SomeCollection = Backbone.Collection.extend({ comparator: function( collection ){ return( collection.get( 'lastName' ) ); } }); 如果我想拥有一个只按'lastName'sorting的集合,这是很好的。 但是我需要dynamic地完成这个sorting。 有时,我需要按“firstName”来sorting。 我彻底的失败包括: 我试着传递一个额外的variables指定variablessort() 。 这没有用。 我也试过sortBy() ,也没有工作。 我尝试将自己的函数传递给sort(),但是这也不起作用。 将用户定义的函数传递给sortBy()只是为了让结果没有each方法,从而sortBy()了新分类的骨干networking集合点。 有人可以提供一个实际的例子,通过一个variables,而不是硬编码到比较函数? 或者你有什么破解的作品? 如果没有,一个工作sortBy()调用?
可能重复: 框架与工具包与图书馆 我想通过使用一些例子来了解JavaScript框架和库之间的区别。 例如,jquery,backbone.js和jasmine是JavaScript框架还是库? 为什么? 你可以提供一些JavaScript框架的例子和一个库使用句子Don't call Us, We'll call You.
当我同步时,是否有办法从我的模型中排除某些属性? 例如,我在我的模型信息中保留了一些视图状态。 比方说,我有一个select器模块,这个模块只是在我的模型上切换selected属性。 后来,当我在我的集合上调用.save()时,我想忽略selected的值,并将其从同步到服务器中排除。 有没有一个干净的方式呢? ( 让我知道你是否想要更多的细节 )
在我的简单项目中,我有2个视图 – 订单项视图(品牌)和应用程序。 我附加了允许select多个项目的function: var BrandView = Backbone.View.extend({ 一些代码 toggle_select:function(){ this.model.selected =!this.model.selected; if(this.model.selected)$(this.el).addClass('selected'); else $(this.el).removeClass('selected'); 返回这个; } }); var AppView = Backbone.View.extend({ 一些代码 delete_selected:function(){ _.each(Brands.selected(),function(model){ model.delete_selected(); }); 返回false; }, }); 事情是,我想知道有多less项目被选中。 在这个设置中,select不会影响模型,因此不会触发任何事件。 从MVC的概念我明白,意见不应该直接与其他意见交谈。 那么AppView如何知道在BrandView中select了什么? 更具体地说,我AppView知道有多less项目被选中,所以如果select多于1,我会显示一个多选的菜单。
我用Backbone.js写了一个模型/视图/集合。 我的集合使用fetch方法从远程服务器加载模型。 这个集合所需的url需要一个id:messages / {id}。 但是我发现没有干净的方式将选项传递给Collection。 backbone.js视图通过在构造上传递选项来接受选项:view([options]),但是集合在构造时需要一个模型列表:collection([models])。 传递参数/选项到这个集合的“最干净的”方式是什么? 缩短的代码: var Messages = Backbone.Collection.extend({ model: Message, url: 'http://url/messages/' + id });
在使用骨干几个星期后,我意识到,下划线延迟最终修复了我在渲染各种视图时遇到的许多asynchronous问题。 有人可以帮我理解什么是下划线延迟,以及$ .ready()或其他types的等待dom渲染函数的方式。 使用它的缺点是什么? _.defer = function(func) { return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1))); };