问题标签 [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.

0 投票
2 回答
486 浏览

backbone.js - 如何在 Backbonejs 中清理视图和模型

问题是当来自注册和调用登录时,它还会同时调用以前的模型请求(注册)导致登录和注册请求(我的模型是 ajax 请求),我如何在每次创建时删除以前调用的模型在我看来是一个新的要求。

谢谢。

0 投票
2 回答
1410 浏览

javascript - 骨干视图自定义事件

我想通过 keydown 验证用户输入。为此,我需要一个 keydown 事件。不幸的是,我只找到了自定义模型事件:

这种方法肯定适用于模型事件,但我不认为这是查看与 ui 相关的东西的正确方法......

为了给您更好的解释,这就是我想使用我的事件的方式:

那么创建可在视图中调用的自定义主干事件的方法是什么?

0 投票
2 回答
871 浏览

backbone.js - 绑定视图方法以动态更改视图的 HTML 类

当我单击此 div 框时,className 已正确更新,但 html 未更新。因此,视图的 className 将更改为“selected”,但是当我检查网页上的 div 框元素时,它仍然显示为“class="unselected"。” 我也希望在单击时更新 html。

建议或指向教程/文档的链接将不胜感激。

0 投票
1 回答
533 浏览

backbone.js - 主干,model.save 后调用 view.render 时未设置一个字段

我有以下问题。在用户事件(点击 .twitterDefault)上,我调用 save 事件

然后调用成功函数并在模型上设置字段(klout、twitter 和 tester)。所有字段都已设置(记录语句都打印出适当的对象。

但是,然后我调用 view.render() 并且这里不再设置 twitter。我不知道为什么,保存后没有同步发生,所以 twitter 不会被覆盖(此外,我确保在调用成功方法之前,twitter 也保存在服务器上)。

非常感谢任何帮助!

代码如下(剥离以提高可读性)

$(函数(){

0 投票
1 回答
1284 浏览

backbone-views - 我如何知道主干视图模板何时完成渲染?

我将 Backbone.js、Require.js 和 Underscore.js 用于单页站点。

我有一个容器视图来处理子视图的换入和换出。

对于我的一个子视图,我需要知道 HTML 模板的渲染何时完成。原因如下:我的子视图 (view_subview.html) 的 html 模板包含一个 iframe 和一个表单:

通过提交表单,myendpt.com/do 将处理生成要在 iframe 中显示的内容。

我试图弄清楚事情的时间安排,以便我可以在表单加载后提交表单。

我的子视图如下所示:

render() 中的 $('#myForm').submit() 调用实际上并没有提交表单。这大概是因为 HTML 仍在加载中,文档还没有准备好。

如果我将 $('#myForm').submit() 调用移到我的容器视图中,我可以让它工作,但我希望 SubView 拥有表单的提交。我的容器视图(和其他不相关的子视图)不需要知道或关心 SubView 中发生的事情。

在 SubView(并且仅在 SubView)中检测 HTML 已完全加载以便我可以调用提交的最佳方法是什么?

0 投票
1 回答
786 浏览

javascript - 在初始化之前如何引用 javascript 窗口元素?

此示例借自 Backbone 目录演示应用程序 https://github.com/ccoenraets/backbone-directory/blob/master/web/js/utils.js#L11

您可以使用字符串数组 [views] 和 [callback] 函数对其进行初始化。

我的问题是如何检查 window[view] (点击上面的链接到代码中的确切位置)如果(据我所知)之前没有被初始化?如果我不准确,请在评论中写下。

0 投票
1 回答
764 浏览

javascript - 使用 add:true 参数获取集合时重新渲染主干视图

我有骨干集合,在某些情况下,我会通过以下方式将更多模型提取到集合中:

当新成员到达时,我需要重新渲染集合的视图。由于 add:true 参数,“reset”事件没有被触发,因此我看到了两个选项。

  1. 将 this.render 函数绑定到集合的“add”事件。这是可行的,但会为从服务器到达的每个新模型调用渲染函数。
  2. 传递 silent:true 作为 fetch 参数并在下一行显式调用 this.render() ,但是在下一行数据仍然没有到达,因此使用旧数据调用渲染函数。

我还没有找到任何其他方法来解决这个问题:( 任何建议在这种情况下我应该怎么做?

0 投票
1 回答
2923 浏览

backbone.js - 从子视图backbone.js 渲染父视图

我有一个主视图和一个模态窗口,它是父视图的子视图。

模态由一个通过 ajax 提交的表单组成。

提交表单后如何从子视图呈现父视图?

0 投票
1 回答
1811 浏览

javascript - Backbone.js 路由器模式,用于对浏览器“后退”按钮或直接导航的不同响应

是否有一个很好的模式来实现对这两个事件做出不同响应的 Backbone.js 路由器:

  • 直接导航- 用户通过将 url 直接放入浏览器或通过调用应用程序直接导航到页面Router.navigate()
  • 浏览器“返回”按钮- 用户按下“返回”按钮可以转到他们之前所在的页面。

我问的原因是因为如果由于用户按下“后退”按钮而调用路由器,我只想将旧视图放回其元素中,$('element_id').html(view.el)而无需将数据重新加载到模型中并重新渲染风景。

如果由于用户通过在浏览器中输入 url、单击链接或从应用程序中调用 Router.navigate() 直接导航到页面而调用路由器,我希望路由器指示模型重新请求数据并触发视图的重新渲染。

任何帮助和建议将不胜感激,非常感谢!

0 投票
1 回答
194 浏览

javascript - 如何在没有 DOM 事件的情况下从 Backbone.js 中的视图获取信息到模型

我是 Backbone.js 的新手,在为模型视图关系找出合适的架构时遇到了麻烦。

我有一个视图,其中包含一个输入框和一个模型,该模型应该获取该输入框的内容并将其发送到服务器。

我的问题是我并不总是有一个谨慎的 DOM 事件来触发对视图更新模型数据的请求,例如input.change. 有时代码本身需要要求模型向服务器发送更新。

到目前为止,我已经想到了三个解决这个问题的方法,但我不确定它们是否有用:

  • 在输入元素的keypress事件上更新模型

  • 使用模型初始化视图后,让视图更新/向模型添加一个名为“ get_input_value()”的函数,该函数返回输入框的值

  • 每当应用程序需要请求模型更新服务器时,首先调用视图中的一个函数,将用户在视图中键入的所有信息更新到模型中。

请记住,这是一个简化的示例。视图还包含子视图,所有子视图都包含许多用户可以操作的元素,模型需要使用所有这些信息进行更新,以便它可以更新服务器。

任何帮助和意见表示赞赏!非常感谢!

编辑 :::

根据 machineghost 的回复,我现在看到我没有正确表达这个问题:

有一个 DOM 事件,但问题是它不一定来自使用模型的视图内部。它可能源自路由器或其他视图,并由全局事件处理程序触发。此外,没有 1:1 的视图模型关系。该模型由以不同方式表达模型的多个视图使用。所以在这种情况下,更新服务器的命令似乎不应该通过视图,而是通过模型本身。如果是这种情况,模型必须能够说“用我的观点同步我!”。

但我不知道如何在不违反规则的情况下做到这一点,从而在架构上产生其他问题......