具有特定类型的 Backbone.Js 集合

2023-11-21

我有一个名为 History 的 BackboneJS 集合,它可以包含多个 Backbone JS 模型之一(从 HistoryItem 扩展,而 HistoryItem 又从 Backbone.Model 扩展),我试图找到一种在加载时重新创建它的方法,不幸的是,BackboneJS 集合似乎只能指定在特定型号,例如

HistoryCollection = Backbone.Model.extend({
  model: app.models.HistoryItem
})

我真正需要做的是确定每种类型,这就是我想做的

 HistoryCollection = Backbone.Model.extend({   
  model: function(item) {
       return app.models[item.type];   } })

在我分叉 Backbone 来实现这个之前有什么想法吗? (即集合模型属性能够接受函数)


在 firebug 中玩弄......想出了一种方法,您可以覆盖集合的解析方法而不是指定模型。您的解析实现基本上成为一个简单的工厂,用于用您想要的模型填充集合:

var BaseModel  = Backbone.Model.extend({
    meth: function(){ return 'Base method'; },
});

var SubModel = BaseModel.extend({
    meth: function(){ return 'Sub1 method'; }
});

var SubModel2 = BaseModel.extend({
    meth: function(){ return 'Sub2 method'; }
});

var ModelCollection = Backbone.Collection.extend({
    parse: function(data){
        var self = this;
        data.forEach(function(item){
            switch(item.type){
            case 1:
                self.add(new SubModel(data));
                break;
            case 2:
                self.add(new SubModel2(data));
                break;
            default:
                self.add(new BaseModel(data))
        }
});
    }
});

//Example Use
x = new ModelCollection;
x.parse([{type: 1},{type: 2}, {type: 99}]);
x.map(function(e){ return e.meth();});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有特定类型的 Backbone.Js 集合 的相关文章

  • 未捕获的类型错误:无法调用 null 的方法“替换”

    如果我在 Chrome JS 控制台上输入 template pranks list html 它也可以工作 gt gt template pranks list html function a return e call this a b
  • 重新渲染子视图后,主干事件会多次触发

    我们有一个由侧边栏和几个子视图组成的主干视图 为简单起见 我们决定让侧边栏和子视图由单个视图管理render功能 但是 那click edit单击侧边栏项目之一后 事件似乎会多次触发 例如 如果我从 常规 开始并单击 edit then h
  • 类型错误:“未定义”不是函数(评估“sinon.spy()”)

    我正在尝试使用sinon js http sinonjs org 在测试骨干应用程序时 但不幸的是 由于错误 我无法使用间谍方法 TypeError undefined is not a function evaluating sinon
  • Rails:backbone-on-rails gem-

    尝试按照 Ryan Bates Backbone js 教程构建抽奖应用程序 但我已经遇到了第一部分代码的问题 在 application js 的 init 函数中 他初始化了 Raffler 路线的新实例 该实例应该触发警报 主页 但我
  • 主干表视图消耗行视图 - 如何构造?

    我有一组模型希望在表格视图中呈现 每个模型应由表中的一行表示 并且该行应使用模板生成 我应该能够将事件处理程序附加到该行 例如单击 在事件发生时发出有关与该行关联的模型的一些特定信息 我见过类似的事情的一种常见方法是将每一行分解到它自己的视
  • 渐进增强 - Node.js、Backbone.js

    Node js 服务器有两个角色 前缀为 api 的路由上的 RESTFul API 在其他路线上呈现网站页面 plans features terms 目前 我的所有页面都会呈现一个 正在加载页面 并与 Backbone router 启
  • Marionette.View 中 UI 元素的可用性

    我只是想了解 Backbone Marionette 关于 UI 元素的观点背后的决定 在现有 DOM 元素上实例化 Marionette View 时 如下所示 view new Marionette ItemView el elemen
  • Backbone-relational 无法实例化两个 RelationalModel 对象

    我正在尝试实现 BackboneRelational 并不断获得 无法实例化多个 Backbone RelationalModel 每种类型都有相同的 ID class App Models User extends Backbone Re
  • 主干集合排序

    我制作了我的第一个主干应用程序 但在集合排序方面遇到了一些问题 使用这个后 var SortedFriends MyFriends sortBy function friend return friend get uid console l
  • 如何有一个后备路由来捕获backbone.js中的未知页面

    我设置了一组如下所示的路线 routes home home home page home 我想知道的是 如何配置路由 以便如果用户请求未知页面 我可以轻松重定向到静态 404 html 页面 在您的路由器中 例如前两条路由 routes
  • 简单的 Backbone 搜索页面 - 您会怎么做?

    我想使用 Backbone 实现一个简单的搜索页面 它不是单页应用程序 但仍然想使用 Backbone 构建我的 JavaScript 代码 搜索页面由搜索表单和搜索结果组成 搜索是通过 AJAX 完成的 并且必须保存在历史记录中 从历史记
  • 如何克隆骨干集合

    有没有办法轻松克隆 Backbone Collection 我想知道为什么没有像模型那样的内置方法 我的问题是我有一个模型包含一组孩子 当我克隆模型时 我仍然有子项的集合 但只有它们的默认值 最简单的方法 var cloned new Ba
  • Backbone Collection 和 Marionette CompositeView 中未定义的模型原型

    尝试从值列表填充集合时 我收到有关集合的错误model s prototype未定义 看着这个问题是关于类似问题的 https stackoverflow com q 16126195 1663942 我已经检查过模型确实已创建before
  • Backbone.js 模型或视图中的类私有属性

    模型中是否可以拥有私有属性 就像 构造函数 函数中本地声明的变量一样 不附加到this 但仅在 构造函数 函数中定义的内容在本地声明且可见 没有 BB 视图的示例 function MyView aModel var internalInp
  • 如何检查侧边栏视图是否已经在主干中渲染?

    通常 用户通过主页进入网站 然后我在那里渲染侧边栏视图 接下来 用户单击链接 路由器呈现另一个视图并替换原始内容视图 侧边栏视图不会重新渲染 当用户在子页面上单击刷新时 侧边栏不会呈现 如何检查视图是否存在并且已渲染 划分责任并坚持下去 不
  • backscore.js 和 underscore.js CDN 推荐吗?

    是否有backbone js和underscore js的CDN源可以在我们的项目中使用 http www cdnjs com http www cdnjs com托管许多不太流行的 JavaScript 框架 包括 主干 js quest
  • Backbone Marionette,复合视图初始化两次

    我正在使用一个复合视图 它的 el 上调用了 dialog 然后 复合视图列出集合中的项目 现在我尝试了多种方法来渲染集合项 在将其附加到视图之前和之后从复合视图外部获取 在视图内部获取 从我的服务器脚本预加载集合等 一切似乎都有效 但出现
  • 使用 Jasmine 监视 Backbone.js 路由调用

    在主干路由器上监视方法调用时遇到问题 以确保它在给定路由上调用正确的方法 测试摘录 describe Router gt beforeEach gt router new App Router Backbone history start
  • 使用backbonejs视图,将“onload”事件附加到图像标签的最佳方法是什么?

    我想在backbonejs 视图中为图像附加一个 onload 事件 我目前将其作为 load img function 包含在 事件 中 但它没有被触发 这样做有什么建议吗 Backbone的事件处理基于delegate https st
  • Backbone 中的加载栏

    我想显示加载消息 图标 直到列表中的所有项目都已呈现 这是我的示例中的 jsfiddle http jsfiddle net 9R9zU 58 http jsfiddle net 9R9zU 58 我尝试在 Feed 部分添加一个带有加载栏

随机推荐

  • (OS 10048) 每个套接字地址(协议/网络地址/端口)通常只允许使用一次。视窗阿帕奇

    当尝试在 Windows 服务器上执行 httpd exe 时 出现以下错误 OS 10048 每个套接字地址 协议 网络地址 端口 通常只允许使用一次 AH00072 make sock 无法绑定到地址 myIpAddress 80 AH
  • 将简单的 HTML 转换为 RichTextBlock

    我从 Windows 8 开始 尝试将 HTML 转换为RichTextBlock I 已读过我可以使用这个功能 HtmlUtilities ConvertToText in a TextBlock但我找不到在中使用此功能的方法RichTe
  • Microsoft.Reporting.* 与 XML/XSLT

    我想向 NET 应用程序添加报告功能 我的数据源只是应用程序的数据模型 即可能从任何东西 不一定从数据库 生成或加载的一堆对象 最初的计划是从这些对象生成报告数据 XML 文件 然后使用 XSLT 将其转换为 XHTML 报告文件 然后可以
  • Spring Security 并发控制

    我已经使用了 spring security 3 0 7 并且正在我的项目中实现并发控制 但它不起作用 我用过
  • 如何以编程方式获取 OS X 上给定 PID 的打开文件描述符列表?

    我所看到的一切都说要使用lsof p 但我正在寻找不需要 fork exec 的东西 例如 在 Linux 上 人们可以简单地步行 proc pid fd You can use proc pidinfo与PROC PIDLISTFDS枚举
  • iOS16+ 横向显示 UIViewController 仅适用于单屏无法工作 [Swift 5.7]

    在 iOS 16 之前 横向呈现单屏对于纵向应用来说是可以的 工作代码如下 Remark 整个应用程序仅处于纵向模式 override public var shouldAutorotate Bool return false overri
  • 按下按钮即可在听筒和扬声器之间切换

    我试图通过在扬声器和耳机之间切换按钮来播放两者的音频 问题是我试图默认从耳机播放音频 但没有任何结果 然后 当我按下按钮切换到扬声器时 仍然没有音频播放 我正在从本地原始文件播放 我在清单中也有 android permission MOD
  • Internet Explorer 忽略某些域上的 cookie(无法读取或设置 cookie)

    我有一个网站 例如example com 用户可以在其中设置自己的子域 一个用户 一个子域 并上传自己的脚本 例如http somedomain example com xyzzy php将映射到 www somedomain xyzzy
  • Knockout.js 在半大型数据集下非常慢

    我刚刚开始使用 Knockout js 一直想尝试一下 但现在我终于有了借口 但是 当将表绑定到相对较小的一组表时 我遇到了一些非常糟糕的性能问题 数据 大约 400 行左右 在我的模型中 我有以下代码 this projects ko o
  • EditText 自定义字符串格式

    我搜索了与我的问题类似的每个问题 但没有成功 我的问题是这样的 我想格式化一个字符串EditText打字时 格式是这样的 它始终是一个 19 位数字 012345 01 0123456789 0 正如您所看到的 我想在用户打字时需要时添加空
  • 判断状态栏是在顶部还是底部?

    我想弄清楚如何判断状态栏的位置 顶部或底部 我尝试检查HierarchyViewer但没有看到状态栏视图 我真正需要弄清楚的是 在给定上下文的情况下 返回一种方法boolean 如果栏位于顶部则为 true 如果不在顶部则为 false 就
  • 如何确定 System.Diagnostics.Process 是 32 位还是 64 位?

    I tried process MainModule FileName Contains x86 但它引发了 x64 进程的异常 Win32Exception 仅完成了 ReadProcessMemory 或 WriteProcessMem
  • 在页面加载时重复并添加列到标题和项目模板

    除了显示数据表中的数据之外 我没有使用中继器 我正在构建一个网格 它显示用户列表和用户已分配的角色列 用复选框显示 下面用 true false 显示 但假装它们是复选框 ex 代表姓名 呼叫者 结案者 经理 超级用户 鲍勃 真实 真实 假
  • 如何使用 Nokogiri 将嵌套哈希转换为 XML

    我有很多级别的嵌套哈希 例如 foo gt bar foo1 gt foo2 gt bar2 foo3 gt bar3 foo4 gt foo5 gt bar5 我怎样才能将它们转换成这样的XML
  • 如何选择 nHibernate 子查询结果的 Count(*)

    为了在 nHibernate 中分页查询 我需要执行以下操作 Select count from Select e ID e Name from Object as e where 我尝试过以下方法 select count from Ob
  • C# 将字符串“0”解析为整数

    我有一台新笔记本电脑在工作 本周早些时候运行的代码今天不起作用 之前工作的代码经过简化 while dr Read int i int Parse dr GetString 1 现在 当数据库值为 0 时 它会失败 有时 但不可靠 这会起作
  • 使用 pandas 创建矩阵结构

    我已将包含代码和系数数据的以下 CSV 文件加载到以下数据框 df 中 CODE COEFFICIENT A 0 5 B 0 4 C 0 3 import pandas as pd import numpy as np df pd read
  • PHP 中的 A* 搜索算法 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 有没有人有实施A 算法在 PHP 中 我知道维基百科有一个伪代码和一个 C 伪代码的链接 但我似乎找不到已经用 PHP 编写的伪代码 我也在寻找一种高效的书面 A 算法 None
  • 理解java 8流的过滤方法

    我最近了解到StreamJava 8 中的 s 并看到了这个示例 IntStream stream IntStream range 1 20 现在 假设我们想要找到第一个既能被 3 又能被 5 整除的数字 我们可能会filter两次并且fi
  • 具有特定类型的 Backbone.Js 集合

    我有一个名为 History 的 BackboneJS 集合 它可以包含多个 Backbone JS 模型之一 从 HistoryItem 扩展 而 HistoryItem 又从 Backbone Model 扩展 我试图找到一种在加载时重