问题标签 [backbone-views]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
backbone.js - 附加到所有视图的主干视图事件
我正在主干中执行我的第一个应用程序,并且尝试附加事件时发生了一件奇怪的事情。
到目前为止我得到了这个代码:
如你看到的。
我正在使用一个集合来存储所有女孩,数据来自 ruby 中的 REST api。
每个女孩创建一个新的模型实例,并在里面附加了一个视图实例。
我不知道这是否是一个好习惯,但我想不出更好的方法来做到这一点。
每个视图都会创建一个具有唯一 ID 的内容。girl-1 girl-2 继续。
现在,模板有一个编辑按钮。我最初的想法是攻击onclick事件并触发编辑视图进行渲染。
这是按预期工作的。
到目前为止的问题是:
当事件触发时,所有集合(女孩)都会触发编辑视图,而不是“拥有”渲染视图的集合。
我的问题是我做错了什么?
非常感谢
javascript - 按钮 Onclick 事件和backbone.js 视图
我目前有一个包含以下内容的 html 文件:
我在一个主干.js 视图文件中有以下内容:
当我单击按钮时,我看到两个函数的未定义函数错误,我是新来的主干任何帮助都会很棒。
backbone.js - _.bindAll 函数
我的问题很可能需要一个非常简单的答案,然而,我无法轻易找到。
我正在处理的一个 Backbone 应用程序有几个视图。在定义不同的视图时,我在初始化函数中使用 _.bindAll 将“this”视图对象与视图的渲染函数连接起来。例如:
要创建 DiscusedItemView 的新实例,我执行以下操作:
代码工作正常。尽管如此,我还是不明白为什么需要在讨论议程上显式使用 render() 函数。我以为初始化一个新的 DiscusedItemView 实例会自动调用渲染函数,但是如果我删除该discussion_agenda_row.render();
行,则不会显示 HTML。我错在哪里?
谢谢你,亚历山德拉
backbone.js - 使用backbone.js 在视图中收听body click
我正在创建一个这样的模式对话框
然后我在这样的另一个视图中创建它
这很好用,但是如果我想在点击正文时或按下转义键时关闭对话框,最好的方法是什么?
javascript - 如何使用 Backbone.Marionette 构建用于将项目创建到列表中的应用程序?
这是使用 Marionette 时仍然让我感到困惑的一件事。
想象一个用于查看评论列表和发表新评论的简单界面。我目前构建它的方式与CommentApp
我在下面包含的类似。
我想我的问题有两个部分:
这是我应该如何构建这种类型的应用程序吗?我尝试尽可能遵循BBCloneMail 示例应用程序,但这似乎没有提供将新项目创建到集合中的示例。
为什么layout.listRegion
下面会返回undefined
我尝试调用.show()
它的地方?更一般地说,是否有一种确定的方法来处理触发和绑定到'layout:rendered'
具有嵌套布局的事件。它似乎变得相当混乱。
该'comment_layout'
模板只是一个基本的容器模板:
我正在使用JST
它来渲染它。我已经用这段代码覆盖了渲染函数:
javascript - 标准菜单栏/详细信息页面移动 UI 的主干视图设计
我正在构建一个移动网络应用程序,并且一直在为我的主干视图的设计和布线而苦苦挣扎。
让我说明我想要实现的目标。
如您所见,上图标识了几个 UI 组件:
- 带有返回、搜索和菜单按钮的工具栏视图
- 带有列表的选项卡式视图
- 详细视图
- 菜单视图
关于行为的一些注意事项:
- 点击菜单按钮覆盖并动画菜单。
- 列表和详细信息视图可通过主题标签永久访问
现在我已经为工具栏、菜单、列表和细节创建了视图。但显然视图之间必须有一些交互,我不知道如何处理它。
要解决的问题:
- 转到详细信息或列表时是否渲染所有视图?如果没有,如何更新工具栏并处理这种关系
- 当从选项卡 2 转到详细信息并返回列表时,如何记住显示了哪个选项卡。记住带有主题标签的可见选项卡不是一种选择,因为不应记住仅在选项卡之间切换。
我一直在研究tbranyen layoutmanager,但它似乎仍然假设完全独立的视图。
scroll - 渲染 Backbone 视图后滚动到底部
我目前正在使用 Backbone 开发一个消息传递系统。我想在渲染时滚动到 CollectionView 中的最后一个元素。
单击页面上的链接后,我可以让它工作,但我希望它发生在视图的渲染上。
这是我在链接中使用的,它有效:
这是视图定义:
我认为它不起作用,因为 onRender 内的页面上没有任何内容?
我对网络开发很陌生,所以要温柔!
无论如何,我真的很感激任何帮助!
javascript - 将backbone.js 视图附加到现有元素与将el 插入DOM
我正在实现我的第一个实际的非教程 Backbone 应用程序,并且有 2-ish 关于使用使用主干.js 的一个方面的问题,这对我来说不是很好,这与将视图的渲染el
注入 DOM 与使用有关的现有元素el
。我想我会在这里为大家提供一些“可教的时刻”,并感谢您的帮助。
我在 web 中看到的大多数 Backbone View 示例在创建 View 时都指定了 tagName、id 和/或 className,从而创建了一个与 DOM 无关的 el。它们通常看起来像:
但是教程并不总是解释他们建议如何将渲染的 el 放入 DOM。我已经看到了几种不同的方式。所以,我的第一个问题是:调用视图的渲染方法并将其 el 插入 DOM 的合适位置在哪里?(不一定是同一个地方)。我已经看到它在路由器、视图的初始化或渲染函数中完成,或者只是在根级文档就绪函数中完成。( $(function ()
) 。我可以想象这些工作中的任何一个,但是有正确的方法吗?
其次,我从一些 HTML 标记/线框开始,并将 html 部分转换为与主干视图相对应的 js 模板。与其让视图渲染一个未附加的元素并在 html 中提供一个锚点来粘贴它,我觉得它更自然,当视图只有一个元素并且它不会消失时,使用现有的、清空的包装元素(通常是 adiv
或span
)作为el
自身。这样我就不必担心在文档中找到插入我未附加的 el 的位置,这可能最终看起来像这样(注意额外的分层):
所以我的第二个问题的一部分是,对于一个基本静态的视图,直接使用页面 HTML 中的现有元素作为我的视图有什么问题el
吗?这样我就知道它已经在 DOM 中,在正确的位置,并且调用 render 将立即在页面上呈现视图。我会通过将已经存在的元素作为“el”传递给我的视图的构造函数来实现这一点。这样,在我看来,我不必担心将其粘贴到 DOM 中(使问题 1 变得毫无意义),并且调用 render 将立即更新 DOM。例如
对于页面上的静态视图,这是一种可行的方法吗?即,这些观点只有一种,在任何情况下都不会消失。或者,还有更好的方法?我意识到根据我使用视图的方式,可能有不同的方法(即在路由器中、在父视图中、在页面加载等),但现在我正在查看初始页面加载用例。
谢谢
javascript - Backbone + Underscore:找不到模板变量。+ 如何正确访问模型属性?
我刚开始使用 Backbone,我的目标是一个简单的幻灯片应用程序。我有一个 REST 接口,其中
/slidecasts
给我一份所有可用演示文稿的列表。返回的 json 如下所示:
如果我想访问单个演示文稿并获取例如第一张幻灯片,我可以简单地执行以下操作:
返回:
我想将演示文稿和幻灯片表示为骨干模型。我还想要一个 Backbone 视图,它最后只显示幻灯片图像、标题、一些注释和一个前进/后退按钮。
到目前为止,这是我的代码:
这适用于集合,但我真的不知道如何从那里获取单个幻灯片的信息。像 slidecast.slide("0") 这样的东西可能吗?
对于我的观点,我也有一些关于模板的问题:
我的 html 看起来像这样:
尽管我已经在视图中定义了变量,但我一直收到错误消息,即未定义要传递给模板 *presentation_name* 的变量名。
backbone.js - Backbone - 在集合中创建多个模型 - 服务器端
我提供了一个表格供用户上传自己的数据。我使用 ajax-form-submit 然后解析数据以创建大量模型(上传的 csv 中每行一个)。
现在,我想将模型创建到预定义的集合中。
我可以使用 add 来获取模型数组,但不幸的是,它不会在服务器端发送 PUSH。我知道我可以为每个模型迭代和创建 .create 但假设我有 10k 个模型,它会创建 10k 个调用。听起来不合理。我错过了什么吗?
另一种方法是在服务器上接受多个模型并使用 .ajax 调用,然后手动添加到集合中以进行 UI 渲染。
寻找最佳路线。谢谢。