栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

多个Model子类的Backbone.js集合

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

多个Model子类的Backbone.js集合

确实有。

当您在集合上调用“提取”时,它将响应通过Backbone.Collection.parse传递,然后再将其添加到集合中。

默认的’parse’实现只是按原样传递响应,但是您可以覆盖它以返回要添加到集合中的模型列表:

class Logbooks extends Backbone.Collection  model: Logbook  url: 'api/logbooks'  parse: (resp, xhr) ->    _(resp).map (attrs) ->      switch attrs.type        when 'UML' then new UmlLogbook attrs        when 'Plane' then new PLaneLogbook attrs

编辑:哇,伊德本特利在我之前到达那儿。唯一的区别是他使用了“每个”,而我使用了“地图”。两者都可以工作,但是有所不同。

使用’each’有效地打破了’fetch’调用开始的链(通过返回’undefined’-随后对’reset’(或’add’)的调用将无济于事)并在解析中在那里进行所有处理功能。

使用“地图”只是将属性列表转换为模型列表,然后将其传递回已经运行的链中。

不同的笔画。

再次编辑:刚刚意识到还有另一种方法:

集合中的’model’属性仅存在,因此,如果集合在’add’,’create’或’reset’中传递了属性,则该集合知道如何制作新模型。因此,您可以执行以下操作:

class Logbooks extends Backbone.Collection  model: (attrs, options) ->    switch attrs.type      when 'UML' then new UmlLogbook attrs, options      when 'Plane' then new PLaneLogbook attrs, options      # should probably add an 'else' here so there's a default if,      # say, no attrs are provided to a Logbooks.create call  url: 'api/logbooks'

这样做的好处是,该集合现在将知道如何为“获取”以外的操作“广播” Logbook的正确子类。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/616840.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号