javascript-Backbone.js-过滤集合与多个集合
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-Backbone.js-过滤集合与多个集合,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1996字,纯文字阅读大概需要3分钟。
内容图文
![javascript-Backbone.js-过滤集合与多个集合](/upload/InfoBanner/zyjiaocheng/656/488ffd76c8e0426f8a0c91c372d9fadb.jpg)
我正在使用骨干.js构建一个文件管理器.它是CMS(内容管理系统)Im建筑的一部分,可通过灯箱/模式窗口进行访问.我需要显示附加到特定内容类型(如帖子)的文件,以及所有一般文件.
在这一点上,我有两个单独的集合,一个libraryCollection(所有文件)和galleryCollection(一个帖子文件).我使用此方法遇到的第一个问题是:编辑libraryCollection中的文件并将模型更改事件绑定到视图显然不会影响galleryCollection视图.
有一个更好的方法吗?我以为我需要对libraryCollection进行分页(就像在REAL分页中那样,只有xx个从服务器检索到的结果),这可能会使事情复杂化.除非将潜在的数千条记录加载到集合中是可以的?
更新:
最快(可能最脏)的方法是使用内置的Backbone.Events系统.样例代码:
var aggregator = {};
_.extend(aggregator, Backbone.Events);
aggregator.on("fileUpdated", function(model){
if(app.libraryCollection && app.galleryCollection){
libraryModel = app.libraryCollection.get(model.get("id"));
galleryModel = app.galleryCollection.get(model.get("id"));
libraryModel.set(model.attributes);
galleryModel.set(model.attributes);
}
});
然后编辑器视图:
window.EditorView = Backbone.View.extend({
saveModel: function(){
self = this;
form = $(this.el).find("form").serializeArray();
_.each(form, function(field){
self.model.set(field["name"], field["value"]);
});
self.model.save();
aggregator.trigger("fileUpdated", this.model);
}
});
这将在两个集合之间同步模型,并且因为我将模型更改事件与render函数绑定在一起(未显示),所以该视图反映了库视图和图库视图之间的更改.
解决方法:
对于您来说,在单独的Backbone.js组件之间进行通信的问题的一种可能的解决方案是为我们提供事件聚合器.在聚集器模式下,诸如视图之类的组件将共享对聚集器的引用,聚集器是充当应用程序中央通信中心的对象.两个视图都没有与订阅另一个视图上的事件的视图,而是与聚合器交谈,聚合器将消息传递到预订该类型消息的任何组件.
例如,您的libraryCollection可能会在聚合器上触发fileAdded事件,从而在消息中传递新的文件对象.您的galleryCollection将订阅聚合器上的fileAdded事件,并在触发时采取一些措施,例如从服务器刷新自身或将传递的文件对象添加到自身.
这是一个excellent blog post,涵盖了事件聚合器模式.
一次将成千上万的记录加载到集合中听起来很麻烦.
内容总结
以上是互联网集市为您收集整理的javascript-Backbone.js-过滤集合与多个集合全部内容,希望文章能够帮你解决javascript-Backbone.js-过滤集合与多个集合所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。