是否可以像这样在backbone中全局覆盖collection.add方法:Backbone.Collection.prototype._add=Backbone.Collection.prototype.add;Backbone.Collection.prototype.add=function(models,options){var=newModels=models.items;Backbone.Collection.prototype._add(newModels,options);}我使用的api始终包含下一级集合的实际模型。在items下,我发现自己覆盖了所有集合的.add方
我有一个包含名称和日期的待办事项列表。我希望能够使用标题或日期对列表进行排序。我该怎么做?比较器只允许一种类型的排序。谢谢。 最佳答案 可以在比较器中实现更多逻辑,以便您可以抽象出一些排序逻辑:varCollection=Backbone.Collection.extend({model:myModel,order:'name'comparator:function(model){if(this.order==='name'){returnmodel.get('name');}else{returnmodel.get('date')
我有一个Marionette.CompositeView需要渲染一个集合。我想在fetch和add操作上过滤这个集合。我尝试使用以下代码(1),但出现以下错误(2)。任何想法,谢谢。(1)varmyCompositeView=Marionette.CompositeView.extend({initialize:function(){this.collection=app.taskCollection.where({type:'todo'});}});(2)//UncaughtTypeError:Objecthasnomethod'on' 最佳答案
我需要清空一个集合,按顺序移除每一项。this.nodes.each(function(node){this.nodes.remove(node);},this);不起作用,因为随着每个节点被删除,它会更改集合的长度。制作一个临时数组,然后迭代该数组。有没有更好的办法? 最佳答案 尝试this.nodes.reset()除非你需要remove事件。否则:varnodes=this.nodes;while(nodes.length>0)nodes.remove(nodes.at(0));
如果我有一个Backbone集合并想创建该集合的副本并过滤掉某些条目,我该如何做到这一点同时将复制的实例保留为Backbone.Collection?例子:varModule=Backbone.Model.extend();varModuleCollection=Backbone.Collection.extend({model:Module});varmodules=newModuleCollection;modules.add({foo:'foo'},{foo:'bar'});console.log(modulesinstanceofBackbone.C
以下示例代码运行良好:Auth_controller.prototype.isLogged=function(){//CheckiftheuserisauthenticatedvargetAuthStatus=this.auth_model.fetch();returngetAuthStatus;};Auth_controller.prototype.redirect=function(fragment,args,next){vargetAuthStatus=this.isLogged();varself=this;$.when(getAuthStatus).then(function
每当我向我的收藏中添加新模型时,我都会尝试更新我的View。我的第一个问题是,当我保存模型时,我是否会自动将模型添加到我的收藏中,例如:PostsApp.Views.Form=Backbone.View.extend({template:_.template($('#form-template').html()),render:function(){this.$el.html(this.template(this.model.toJSON()));},events:{'clickbutton':'save'},save:function(e){console.log("isthiswo
为了学习主干,我正在创建一个类似Twitter的应用程序。所以你知道Twitter每N秒向服务器发送一个GET请求来检查新推文。如果有新推文,它会创建隐藏的li元素并显示带有“NnewTweets”的按钮。如果您单击它,它会显示隐藏的li元素,显示新推文。但是当您添加一条新推文时,行为会有所不同:推文是可见的。您无需单击按钮即可看到它。我已经为隐藏的推文制作了第一部分。对于发布新推文并直接展示它的部分,我认为通过创建新模型、调用collection.create()并触发正确的事件会很容易做到,例如:varnewTweet=newTweet();newTweet.set(/*setth
刚刚开始使用Backbone。我有一个通用View,可以将集合呈现为带有标题的列表。我目前正在将集合和标题传递给渲染方法,但这似乎有点奇怪。还有其他更规范的方式吗?例如:varListView=Backbone.View.extend({template:_.template(["","","0){%>","","","","","","None.",""].join('')),itemTemplate:_.template("()"),render:function(items,title){varhtml=this.template({items:items/*acollectio
我创建了一个带有全名字段的用户集合(即JoseOsorio、Josecastro、Johnsmith、MariaSmith),我需要创建一个搜索栏以按姓名或姓氏查找注册用户。即在搜索栏中写下何塞,我想见何塞·奥索里奥和何塞·卡斯特罗。我读到有关在数据库中创建索引但它不起作用或者我做错了,我该怎么做才能解决这个问题? 最佳答案 您还可以像这样使用rawCollection:Products.rawCollection().createIndex({"type":"text","searchString":"text","title":