如何使用 Backbone.Marionette 处理嵌套的 CompositeView?

2023-11-26

我正在使用 Backbone 进入更大规模的数据结构,并且遇到了通过 CompositeViews 很好地表示数据的情况;也就是说,CollectionView 周围添加了“附加内容”,例如标题、按钮等。

然而,我在将 CompositeViews 相互嵌套时遇到了很多困难。使用 CompositeView 上的标准 itemView 属性来渲染另一个 CompositeView 似乎根本没有触发。

假设我有一个父项目视图,这样实例化(如下德里克·贝利的例子;假设这个顶层是初始的位置fetch()在集合上将被调用):

var User = Backbone.Model.extend({});

var UserCollection = Backbone.Collection.extend({
    model: User
});

var userList = new UserCollection(userData);

var schedulerCompositeView = new SchedulerCompositeView({
    collection: userList
});

schedulerCompositeView.render();

this.ui.schedulerWidget.html(schedulerCompositeView.el);

And 调度程序复合视图看起来像这样:

return Backbone.Marionette.CompositeView.extend({
    template: Handlebars.compile(schedulerCompositeViewTemplate),
    itemView: SchedulerDetailCompositeView,
    appendHtml: function (collectionView, itemView) {
        collectionView.$("#schedulerGroups").append(itemView.el);
    }
});

最后,SchedulerDetailCompositeView:

return Backbone.Marionette.CompositeView.extend({
    template: Handlebars.compile(schedulerDetailCompositeViewTemplate),
    itemView: SchedulerDetailItemView,
    appendHtml: function (collectionView, itemView) {
        collectionView.$("#schedulerDetailStops").append(itemView.el);
    }
});

SchedulerDetailCompositeView 永远不会被实例化;事实上,它的appendHtml()方法似乎根本不会触发。

显然这里还缺少一些其他信息;显然,其目的是将集合/模型传递给 SchedulerDetailCompositeView,但由于嵌套的 CompositeView,我不太确定这样做的正确技术是什么。

作为参考,这是我想要实现的结构的粗略模型;如果有比嵌套 CompositeViews 更好的方式来实现这个目标,我当然会洗耳恭听:

http://jsfiddle.net/KAWB8/


尤里卡! deven98602 为我设定了正确的道路。

要记住的关键是,如果您嵌套多个 CompositeView(或 CollectionView),则向下的每个级联级别将代表其父级集合中的一个单元;那是我的SchedulerDetailCompositeViewfrom before 代表集合中的单个模型调度程序复合视图。因此,如果我正在构建嵌套的 CompositeView(大概基于深度嵌套的数据),我必须重新定义这些级联子级的集合,因为它们只有一个与之关联的模型,而不是要渲染的正确集合。

也就是说,更新后的SchedulerDetailCompositeView看起来像这样:

return Backbone.Marionette.CompositeView.extend({
    template: Handlebars.compile(schedulerDetailCompositeViewTemplate),
    itemView: SchedulerDetailItemView,
    initialize: function () {
        var Load = Backbone.Model.extend();

        var LoadCollection = Backbone.Collection.extend({
            model: Load
        });

        // this array of loads, nested within my JSON data, represents
        //  a new collection to be rendered as models using SchedulerDetailItemView
        var loadList = new LoadCollection(this.model.get("loads"));

        this.collection = loadList;
    },
    appendHtml: function (collectionView, itemView) {
        collectionView.$("#schedulerDetailStops").append(itemView.el);
    }
});

集合确定后,appendHtml()按预期触发并渲染这个新设置的集合中的每个新模型。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Backbone.Marionette 处理嵌套的 CompositeView? 的相关文章

  • jQuery show() 和 hide() 的更流畅替代方案

    我有一个带有隐藏列的页面设置 使用 jQuery show 和 hide 函数将列滑入和滑出 然而 它有点 笨重 并且在显示 隐藏时看起来不太流畅 相比之下 我还有一个使用 jquery UI 手风琴的页面部分 当在这些部分之间切换时 过渡
  • 从 iframe 关闭父弹出窗口

    在domain1 com 上 我有一个链接 可以打开domain2 com 的弹出窗口 弹出窗口中有一个 iframe 也托管在 domain2 com 上 在 iframe 中 我试图关闭弹出窗口 我似乎对如何做到这一点感到困惑 在 if
  • JQuery:提交时不起作用

    我想要捕获所有表单提交事件 从操作属性获取 url 并使用它通过 AJAX 将表单内容发送到该地址 所以我只需要一个提交事件处理程序 然而我很快就遇到了麻烦 因为它似乎无法在 IE 中工作 document submit function
  • 计算div标签内img标签的数量

    我的代码是这样的 div img src some image png img src some image png div class another div div div class another div div div 我想计算该
  • 用于匹配重复子字符串的单个js正则表达式?

    假设我有一个字符串 例如 where is mummy where is daddy 我想用空字符串替换任何一组重复子字符串 所以在这种情况下where and is元素将被删除 结果字符串将是 mummy daddy 我想知道是否有任何单
  • CKEDITOR.styleSet.add - 'a' 元素的新样式

    由于某种原因如果我改变 p to a 它不再出现在样式列表中 有什么理由吗 CKEDITOR stylesSet add default name Wys wiersza 1 element p styles line height 18p
  • 从画布保存/转换后文件质量下降的问题

    这是我正在使用的代码 代码位于这篇文章的底部 但这里是链接GitHubGist Noitidart ff addon snippet browseForBadgeThenCreateSaveAnApply js https gist git
  • 如何使用 JS/Puppeteer 上传文件

    我试图弄清楚如何将图片文件上传到输入对话框中 不可能只输入名称并按 Enter 键 因为我没有找到使用 Puppeteer 实现自动化的方法 我想我必须设置一些值作为图片 但我不知道该怎么做 有任何想法吗 您使用上传文件elementHan
  • 如何在jsp中使用javascript动态创建下拉框?

    我正在尝试动态创建下拉框 就像当我单击添加按钮时它必须创建新的下拉框 下拉列表还包含动态值 例如需要当前年份并且必须显示最多五年 请建议我这样做 谢谢 这是我尝试过的代码 JavaScript 代码 function Add var nam
  • HTTP请求的内容长度>正文大小

    我正在管理一个网站 该网站过去几个月在使用 MVC 3 0 ASP net 构建的 IIS 7 5 上运行良好 当我们的 AJAX POST 请求 通过 jQuery 触发 因发布的 JSON 被截断而失败时 我们时不时地会遇到一个问题 到
  • 当用户输入/删除时,使文本字段中的提示消失/重新出现[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 有谁知道我怎样才能在我的搜索栏中做出
  • Angular2,测试和解析数据:如何测试 ngOnInit?

    我正在通过Angular2 测试指南 https angular io docs ts latest guide testing html并希望编写一个测试ngOnInit 功能 那个来自编程指南的路由部分 https angular io
  • Angular2 - 防止复选框被选中

    我有一个每行包含一个复选框的表 在表头中 我有一个Check All切换所有表格行框的复选框 我正在尝试实现一些逻辑 如果复选框的数量将超过特定限制 则显示错误并且不切换表行复选框或checkall盒子本身 有一个问题允许checkAll即
  • JavaScript 检查时区名称是否有效

    有没有一种方法可以在不使用外部库的情况下检查 JavaScript 中的时区名称是否有效 当用户在文本字段中输入时区名称时 我想验证时区是否有效 我知道我们可以使用时刻时区库轻松做到这一点 但我不想使用任何额外的库 我正在寻找纯 JavaS
  • 包含括号的变量会导致问题[重复]

    这个问题在这里已经有答案了 简单的事情 当单击按钮并将其写入文本字段时 我读取选择框的值 选择框
  • 特别更改画布上的笔画不透明度,但不更改颜色

    我有一个漂亮整洁的脚本 可以循环显示颜色 并且与 xxxxxx格式 但我想改变透明度 有没有办法做到这一点 我指的是ctx strokeStyle 这是当前的代码 canvas strokeStyle 16777215 s length i
  • 如何使用 Ajax 在 Flask 中发布按钮值而不刷新页面?

    我有一个问题 当我单击 Flask 应用程序中的按钮时 我想避免重新加载 我知道有 Ajax 解决方案 但我想知道如何将我的按钮链接到 ajax 函数以发布按钮值并运行链接到其值的 python 函数 这是我的 html 按钮 div di
  • 如何优化 Three.js 中多个 sphereGeometry 的渲染?

    我想优化 Three js 中 sphereGeometry 的渲染 因为它成为我的程序的瓶颈 javascript程序如下所示 var sphereThree for var idSphere 0 idSphere lt numSpher
  • 角度距离计算

    我正在使用角度制作距离计算应用程序 Html
  • 如何在输入时格式化 contenteditable div?

    我正在尝试编写一个函数 允许 contenteditable div 在用户输入 div 时执行一些自动格式化 到目前为止我只能让它在 IE 中运行 有人可以帮助我吗 function formatOnKeyUp if window get

随机推荐

  • 估计未定义表面的梯度

    我想估计一个梯度 斜率和坡向 不明确的表面 即函数未知 为了测试我的方法 这里是测试数据 require raster require rasterVis set seed 123 x lt runif 100 min 0 max 1 y
  • 为什么 std::vector::insert 使插入点之后的所有迭代器无效

    When insert ing 成std vectorC 标准确保插入点之前的所有迭代器都保持有效 只要capacity未耗尽 参见 23 2 4 3 1 或std vector 迭代器失效 不允许插入点之后的迭代器保持有效 如果容量未耗尽
  • C# 4.0 中的类属性/字段可以是匿名类型吗?

    As in public class MyClass private static var MyProp new item1 a item2 b 注意 上面的代码既不能编译也不能工作 var 不能在那里使用 它只是为了表明我的观点 Upda
  • iOS 7 中锁屏播放器的搜索栏问题

    如果我在 iOS 7 中通过 iPhone 的本机音乐播放器播放音乐并在锁定屏幕上访问它 那么我可以拖动播放器的搜索栏 即用户可以与其交互 截屏 但是 如果我从支持后台音频播放的应用程序播放音乐 则播放器的搜索栏用户交互将在锁定屏幕上禁用
  • 如何从Linux内核访问用户空间内存?

    我知道copy to user copy from user get user put user函数就是为了这个目的 我的问题是 给定一个用户空间地址 指针 我如何从内核访问该地址指向的数据 我可以想象 首先我必须确保包含的页面应该位于物理
  • 空手道-需要帮助来断言日期范围的一维数组

    我试图断言一维数组内的值 我尝试过使用 match 但看起来无法断言日期范围 下面是对象数组 2019 04 24T17 41 28 2019 04 24T17 41 27 975 2019 04 24T17 41 27 954 2019
  • 在服务器上使用socket.io和nodejs,并以apache作为反向代理

    我尝试将 Node js 与 Socket IO 结合使用来促进浏览器和客户端之间的消息传递 如下导游 但是 我必须在 Apache 后面设置 Node 反向代理 因此 我使用 example com nodejs 代替 example c
  • Google Appengine 和 rx-Java?

    rxJava 库与 Google Appengine 兼容吗 如果可以的话有什么限制吗 我发现的唯一信息是提到 grepcode 上的 部分支持 http grepcode com snapshot repo1 maven org mave
  • Android RecyclerView 选择第一个 Item

    我正在使用 RecyclerView 来实现 NavigationDrawer 我让点击事件正常工作 但我不知道如何在应用程序启动时选择第一个项目 然后即使未显示抽屉 也可以保持所选项目高亮显示 我所能找到的只是 RecyclerView
  • mysql CREATE VIEW 无法从 mysql_query 工作

    我有一个在 mysql 数据库中创建 VIEW 的代码 该代码在我的本地服务器上运行良好 它可以正常创建和裁剪视图 但在我的在线服务器上它给出了错误 CREATE VIEW command denied to user 对于在线数据库 我在
  • C#:在并行线程中设置 HttpContext.Current 有什么问题吗?

    我正在使用一个依赖于 HttpContext Current 的库 该库是 Facebook C SDK 但我的问题也应该适用于其他场景 我想从并行线程内部使用这个库 但是 HttpContext Current 在并行线程中不可用 因此我
  • Haskell 中 FFI 调用的类型自动转换

    我定义了以下模块来帮助我导出 FFI 函数 LANGUAGE MultiParamTypeClasses FunctionalDependencies TypeSynonymInstances module ExportFFI where
  • 无法制作完整的帧缓冲区对象 8cd6(iOS,以编程方式创建的 OpenGL 视图)

    我在让以编程方式创建的 OpenGL 视图在某些 iOS 版本 设备上运行时遇到问题 这似乎在越狱设备上最常见 但在普通设备上也会发生 似乎只有 v4 1 或 4 2 1 才会失败 我的设备已越狱 这不是我的 当然也不是我选择越狱的 并且装
  • C - 包含依赖项的编译

    我有一些代码想在我没有 root 访问权限的机器上运行 该机器没有运行此代码所需的一些库 有什么方法可以在编译时包含所有依赖项吗 我意识到生成的文件可能非常大 您正在寻找的是静态编译 执行静态编译将所有库包含到可执行文件本身中 因此您不必太
  • 在 Angular 2 中的对象的所有属性中搜索字符串

    如何使用 TS 在 Angular 2 中的对象的所有属性中搜索字符串 我在带有搜索框的表中呈现了一组客户 如果用户键入一个值 我想搜索所有属性值以推送与键入的值匹配的客户 export var CUSTOMER Client id 1 n
  • 在 PdfPCell 中右对齐文本

    我有一个可以生成 PDF 发票的 C 应用程序 此发票中有一个项目和价格表 这是使用生成的PdfPTable and PdfPCells 我希望能够右对齐价格列 但我似乎无法做到 文本总是在单元格中左对齐 这是我创建表的代码 PdfPTab
  • 用经度和纬度计算半径[重复]

    这个问题在这里已经有答案了 我试图确定两个位置 每个位置都有自己的纬度和经度值 彼此之间的距离是否在一定距离内 例如 3 英里半径 我有双值来表示每个位置的纬度和经度 Location 1 Double lattitude1 40 7143
  • Java Math.cos() 方法未按预期返回 0

    在 Windows 7 PC 上使用 Java 不确定这是否重要 并对应该返回 0 如 pi 2 的值调用 Math cos 而不是返回小值 但除非我误解 否则小值是与零相比远大于 1 ulp Math cos Math PI 2 6 12
  • 使用 jQuery 确定 Android 上的长按(长按、轻按按住)

    我已经能够成功播放使用 jQuery 和 HTML 页面在 Android 上实现 touchstart touchmove 和 touchend 事件 现在我想看看确定长按事件的技巧是什么 即点击并按住 3 秒 我似乎还无法弄清楚这一点
  • 如何使用 Backbone.Marionette 处理嵌套的 CompositeView?

    我正在使用 Backbone 进入更大规模的数据结构 并且遇到了通过 CompositeViews 很好地表示数据的情况 也就是说 CollectionView 周围添加了 附加内容 例如标题 按钮等 然而 我在将 CompositeVie