Backbone:视图内的视图列表

2023-12-05

让我先展示我需要什么,以便您能够理解我的问题。 我有一个联系人视图,例如:

ContactView = Backbone.View.extend({
    template: _.template("Name: <%= name %>
                          E-mail: <%= email %>
                          Phones
                          <%= label1 %> - <%= number1 %>
                          <%= label2 %> - <%= number2 %>"),
    render: function() {
       var contact = this.template(this.model.toJSON());
       this.$el.html(contact);
    }
});

到目前为止一切顺利,问题是电话部分是一个列表,我的模型包含一系列电话,我需要将其动态地放入该模板中。

我的想法是创建另一个模型并为此查看 Phone 和 PhoneView。 然后在 ContactView 中我将创建一个方法 render_phones,例如:

render_phones: function() {
    var phones = this.model.get('phones');
    var phones_str = "";
    for (var i in phones) {
        var phone = new Phone(phones[i]);
        var phoneView = new PhoneView({model: phone});
        phones_str += phoneView.render();
    }
    return phones_str;
}

我将 ContactView 模板更改为:

template: _.template("Name: <%= name %>
                      E-mail: <%= email %>
                      Phones
                      <%= phones %>"),

但是如何让我的渲染方法获取渲染的电话列表并将其放入模板中?

我找不到处理这种情况的模式。而且代码开始看起来不太好。

ps:这只是一个例子,我的应用程序还有其他几个部分需要这个,一个需要生成列表中内容的子视图的视图。


看起来您正在使用 underscore.js 来渲染模板,underscore.js 提供了一种方法渲染集合在模板内(看第二个例子)。例如

template: _.template("Name: <%= name %>
                          E-mail: <%= email %>
                          Phones
                <% _.each(phones, function (phone) { %>
                 <%= label %> - <%= number %>
                <% }); %>"),

您还可以为每个模型渲染单独的视图,并在同一渲染模型中修改el在那里渲染它,但除非你需要视图(例如内容会改变或者你正在监听事件),否则这样做可能不值得。这是一个如何实现这一目标的示例

render: function () {
  this.$el.html(this.model.toJSON());
  _.each(this.model.get('phones'), function(phone) {
    this.$el.find('.phoneArea').append(new phoneView({model: phone}).render().el));
  },this);
  return this;
}

另外,如果您要走这条路线,请注意,缓存视图可能是值得的,但同样,如果您需要的只是渲染内容,那么只需将电话号码保留为数组并将其渲染在模板。

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

Backbone:视图内的视图列表 的相关文章

  • 获取集合时的 ​​Backbone.js 进度条

    我想在用新内容更新应用程序时显示进度条 我想最好的办法是在集合上调用 fetch 时执行此操作 我获取的内容主要是图像 视频海报等 但我只获取链接 而不是 base64 字符串或大的东西 我想做的是在获取图像链接时用进度条覆盖屏幕 渲染视图
  • Backbone.js el 不工作

    App Views VideoView Backbone View extend initialize function bindAll this render this model this options model this rend
  • 如何使用 lodash、underscore 或 bluebird 同步迭代数组 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我有一个数组 其中每个索引处包含文件名 我想下载这些文件一次一个 同步 我知道关于 Async 模块 但我想知道是否有任何功能Lodash
  • “use strict”和 underscore.js 的问题

    我使用 Yeoman 和backbone js 编写了一个应用程序 在我指定的每个 js 文件的顶部 use strict 当我运行 grunt 任务时 jshint 不会遇到任何错误 我可以使用 grunt 构建我的应用程序而不会出现问题
  • Backbone Marionette CompositeView 排序列表 - 在添加时呈现额外的模型

    这是小提琴 http jsfiddle net QhQ8D 10 http jsfiddle net QhQ8D 10 代码在下面 制作一个聊天应用程序 需要一个排序的 连接的用户列表 名称上带有比较器的图形集合连接到 CompositeV
  • 如何克隆骨干集合

    有没有办法轻松克隆 Backbone Collection 我想知道为什么没有像模型那样的内置方法 我的问题是我有一个模型包含一组孩子 当我克隆模型时 我仍然有子项的集合 但只有它们的默认值 最简单的方法 var cloned new Ba
  • 如何重载比较器以使用 UTF-8 和不同区域设置进行排序

    我有一个数据集合 Alphabet Zend wiczenia 结果collection sort I get Alphabet Zend wiczenia 如何超载comparator使用 UTF 8 和不同的语言环境进行排序 你需要设置
  • Backbone.js 模型或视图中的类私有属性

    模型中是否可以拥有私有属性 就像 构造函数 函数中本地声明的变量一样 不附加到this 但仅在 构造函数 函数中定义的内容在本地声明且可见 没有 BB 视图的示例 function MyView aModel var internalInp
  • 在 Node js 应用程序中加载backbone.js

    我正在使用node js 和backbone 来构建网络应用程序 Backbone 是我的软件包要求的一部分 我之前使用过 Rails 和 Backbone 辅助 gem 非常适合将需要到达客户端的所有资产 js 文件 拼凑在一起 话虽如此
  • 如何提取 Backbone 集合的属性

    我想从 Backbone 集合创建一个特定属性值的数组 var days select this collection models function model return model attributes type session d
  • Marionette CompositeView 为 Collection 中的每个模型呈现自身,而不是 ItemView (Marionette Rails)

    基本上 我试图将 CompositeView 渲染为带有表头的简单四列列表 其中集合中的每个模型都渲染为 并附加到 我正在跟进德里克的一个例子 http jsfiddle net derickbailey me4NK 非常接近 只有一点点变
  • Rails 4 - 带有 dependent-fields-rails 的条件 JS

    我正在尝试弄清楚如何在我的 Rails 4 应用程序中使用 dependent fields rails gem 我迷路了 我已将 underscore js 包含在我的供应商 javascripts 文件夹中 并更新了我的 applica
  • 获取钛合金中点击的TableRow的ID?

    我是 Titanium 和 Backbone 的新手 我以前使用过 JS 框架 最熟悉 Knockout js 但 Backbone 及其与 Alloy 的工作方式需要一些时间来适应 我想做一些非常简单的事情 我有一个绑定到 TableVi
  • 使用 Jasmine 监视 Backbone.js 路由调用

    在主干路由器上监视方法调用时遇到问题 以确保它在给定路由上调用正确的方法 测试摘录 describe Router gt beforeEach gt router new App Router Backbone history start
  • 我应该在客户端和服务器上都使用 MVC 吗?

    我决定在我的网站上使用 MVC 模式 所以 现在我在我的网站上使用 Backbone js 框架 我网站上的所有操作都是ajaxy 所以server只从db获取数据 并将数据保存到db 我是否也需要在服务器端使用 MVC 这让一切都变得复杂
  • 检测 _ 是 lodash 还是下划线

    什么是 权威 的方法来检测 变量是用lodash还是下划线加载的 我在用lodash https lodash com 对于环境中的项目下划线 http underscorejs org 有时可能也可以加载 目前 我想出了这个 lodash
  • 将 Backbone 结构转换为 TypeScript

    看看 Backbonejs 的实现扩展功能 http backbonejs org docs backbone html section 186 它表明它不是一个基本的原型扩展 当主干扩展直接转换为 TypeScript 类时 有些东西会停
  • 为什么 Backbone.js 模型的“on()”将“this”作为最后一个参数(如果它几乎总是如此)?

    我刚刚接触 Backbone 我不明白的一件事是为什么模型的 on 方法总是采用三个参数 事件 处理程序和上下文 似乎几乎总是 this 用于上下文 我还没有看到任何其他用法 即使有 因为我还没有见过 那一定是相当罕见的 所以我的问题是 什
  • 我在哪里可以找到高级backbone.js示例[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 有人可以指导我找到包含高级backb
  • 您的backbone.js 项目的最佳实践是什么?

    尽管我已经关注backbone js 几个月了 并且学习了大量教程 但我仍然对在更大的项目中使用backbone 或我的相关技能 没有足够的信心 我的经验是 backbone js 教程的质量差异很大 有些已经过时了 尤其是backbone

随机推荐

  • Android Studio 项目的 .gitignore 中应该包含哪些内容?

    我的文件中应该包含哪些文件 gitignore对于 Android Studio 项目 我见过几个例子 全部包括 iml但 IntelliJ 文档说 iml必须包含在您的源代码管理中 更新至Android Studio 3 0请在评论中分享
  • 如何得到拓扑排序的所有解

    大家好我正在尝试解决这个问题我意识到它想要获得拓扑排序问题的所有解决方案 我知道如何只获得一种可能的解决方案 这是我的代码http ideone com IiQxiu static ArrayList
  • 在没有互联网访问的情况下安装 pythonnet

    我正在尝试在无法访问互联网的计算机上安装 pythonnet 在连接的机器上 我从 Github 下载了 pythonnet master zip 从 pypi 下载了 pythonnet 2 4 0 tar gz 当我尝试时pip ins
  • 防止 Visual Studio Code 中的自动完成

    我正在使用新的视觉工作室代码 In a SQL file any time you type case it automatically adds end as if you were building a case block Even
  • 向 django 添加自定义语言

    我正在将我的网站翻译成欧盟的 24 种语言 其中包括 Malti 语言 该语言未在 django 默认支持的语言中列出 我想知道是否有一种方法可以向 django 添加自定义语言 以便它可以与本机 i18n url 函数一起使用 Thank
  • 在 IE 中 contenteditable div 的输入框中插入文本

    我正在尝试在输入框中插入文本contenteditable分区当我点击输入框时 光标不出现 双击输入框后可以插入文本 这个问题出现在IE中 div div
  • 图层中的 Alpha 检测在模拟器上正常,而不是在 iPhone 上

    首先 检查一下这个非常方便的扩展CALayer来自其他地方的SO 它可以帮助您确定图层内容中的点是否已分配CG图像参考是否透明 注意 不能保证图层的contents具有代表性或回应 就好像它是一个CG图像参考 当然 这可能会对更广泛地使用上
  • 如果函数声明时没有使用“const”关键字,函数调用签名会出错

    我是 TypeScript 新手 正在学习中呼叫签名 如果我将函数存储为let or const关键词 像这样 呼叫签名 type Foo desc string arg string void 如果我创建一个函数并使用它存储它let or
  • 玩框架路由麻烦(400错误请求)

    我在向 play 框架发送 POST 时遇到问题 这甚至可能与 Play 相关不如与 HTTP 相关 ajax type POST url http localhost 9000 start data myJson JSON stringi
  • Ajax 请求在多次点击时附加

    如果用户填写了一些无效数据 则会触发 ajax 请求并显示错误消息 现在 当用户再次更正数据 或再次输入无效数据时 会触发 2 个请求 下一次会触发 3 个请求 并且会继续累加 这可能是因为 parsley js 库的原因 如果我删除欧芹代
  • 从直方图中获取值或从迹线中获取值

    在情节中 我可以创建一个直方图 例如在此示例中 文档中的代码 import plotly express as px df px data tips fig px histogram df x total bill fig show whi
  • Close 从未被明确调用过

    我有一个来自 sqlite 数据库的列表视图 我在几个不同的点调用 fillData 来更新列表视图 private void fillData mDbHelper open Cursor c mDbHelper fetchAllNotes
  • centos中imagemagick安装问题

    我正在尝试通过以下网址在我的服务器 centos 7 1 最低 上安装 imagemagick imagemagick安装步骤 在步骤 1 中出现此错误 Loaded plugins fastestmirror Loading mirror
  • 休眠正则表达式

    我正在尝试构建一个可以通过 HQL 正则表达式关键字进行搜索的 API 编辑 在 HQL 中执行正则表达式搜索的最佳方法是使用条件 Restrictions like 或 Restrictions ilike public static L
  • Android:在 OnItemClick 后替换 GridView 数组中的图像

    我有一个网格视图 大致如下所示 每个图像最终都会有所不同 当用户单击数组中的任何图像时 我希望该图像更改为 如果他们再次点击 它会变成这样 然后再次单击将恢复为 到目前为止 这是我的代码 只是使用 Imageadapter 创建一个 Gri
  • PHP:在 XML 中搜索字符串

    我尝试下面的搜索代码 但它只显示第一个子节点 我的代码中缺少什么吗 目录 xml
  • 使用 WCF 数据服务进行分页

    我的问题是关于如何使用 WCF 数据服务处理分页 我想要使 用它的方式是执行查询 传递页面大小和当前页面 并返回该查询的结果以及分页信息 例如总页数 当前页码和页面大小 客户端 这是另一个将结果转换为 JSON 供使用该结果的移动应用程序使
  • 连接向量中的相邻字符串

    Given qz lt quantile c 1 2 3 4 5 6 7 8 9 10 c 0 0 0 2 0 4 0 6 0 8 1 0 我想从分位数创建一个标签向量 目前 我这样做 zlab lt c paste paste sprin
  • 从另一个 2D 数组的元素中过滤 2D 数组

    我有两组数字元素存储为二维数组 使用以下方法从列中获取值 getValues 一个是完整列表 另一个是部分列表 我想要一个返回完整列表减去部分列表的函数 The partialListArr可能包含重复项 这fullListArr做 不是
  • Backbone:视图内的视图列表

    让我先展示我需要什么 以便您能够理解我的问题 我有一个联系人视图 例如 ContactView Backbone View extend template template Name E mail Phones render functio