问题标签 [marionette]
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.
javascript - 事件保持绑定到僵尸实例
我面临着看起来像僵尸参考案例的情况。
首先,这是我正在使用的代码。
在这里,您将找到我的用户详细信息管理器布局要点
相反,可以在此处找到控制器
操作流程如下:
- 管理员在点击控制器上调用“manageUsers”的路由时访问用户列表。
- 管理员单击用户行并触发事件“users:selected”并且侦听器接收要使用的用户实例。
- DetailsLayout 在应用程序的主布局中被实例化和呈现。特别是在其“内容”区域。
- 处理用户详细信息表单的视图也被实例化并呈现在 DetailsLayout 的“dettagli”区域内。
- 此时,管理员有兴趣管理此用户的笔记。因此,他单击标记为“notes”的选项卡,便笺列表将呈现在 DetailsLayout“note”区域中。
- 单击管理员想要使用的注释会触发事件“notes:selected”,它将注释实例传递给适当的事件处理程序 (DetailsLayout.showNote)。
此时,一旦管理员单击触发 DetailsLayout.showUsers 的链接,该链接又触发上述控制器侦听的事件“users:index”,他将返回到上面列表的第 1 点。
重复整个过程直到第 5 点按预期工作,但是,一旦管理员选择要工作的注释,调试器就会显示有关未定义 DetailsLayout 区域“注释”的错误。
逐步运行代码,我发现在第二次运行时,触发的事件正确绑定到 DetailsLayout 的正确实例,但第 6 点仍绑定到第一次传递时使用的实例。
上面的代码显示,每次显示用户的详细信息时,都会创建一个新的 DetailsLayout 实例。难道这还不足以保证没有僵尸还在附近吗?如果我从backbone.marionette 文档中没记错的话,每次layout.region.show() 被击中时,它都会关闭前一个视图(解除绑定事件和所有其他事件)并附加新的passwed 视图。
我做错了什么?
在此先感谢您的帮助。问候
附言
Backbone.marionette 版本为 0.8.4
Backbonejs 版本为 0.9.2
jquery - 骨干木偶 CompositeView “事件僵尸”
我有一个使用 Backbone Marionette CompositeView 创建的相当简单的表。此表的唯一要求是它显示数据并允许用户通过单击标题行对其进行排序。对表格进行排序时,用于对标题列进行排序的列用类标记,以允许使用 CSS 显示箭头(例如,'class="sort asc"')。
这就是问题所在:单击标题行时,传递给回调(通过 event.target)的元素不是 DOM 上的表的一部分。相反,使用 Chrome 的调试工具,似乎目标元素实际上是模板脚本块的一部分,而不是用户实际看到的元素。
我现在最好的解决方法是通过从模板中的克隆检索唯一信息来查找实际附加到 DOM 的元素。
这是复合视图代码(借自 Derick Bailey 的示例 Fiddle 之一):
模板也很简单:
可以在这里找到 Derek 的原始演示 Fiddle 的一个分支,用于演示问题:http: //jsfiddle.net/ccamarat/9stvM/14/
我有点绕道。我的问题是,我似乎产生了某种僵尸视图;这是一个 jQuery/Backbone/Underscore 错误,还是我只是把这一切都搞错了?
** 编辑 ** 这是显示两个元素的不同父层次结构的控制台输出:
backbone.js - 如何在 CollectionView 中呈现依赖于 DOM 的视图?
我有一个Marionette.CollectionView
呈现ItemView
s 的列表。在此期间render()
,我使用 ItemViewmodel
使用Raphael绘制一些 SVG 。
Raphael 要求我为其画布指定高度和宽度,我通常会从this.$el
. 但是,$el
(作为空的<div>
)在添加到 DOM 并对其应用 CSS 规则之前没有尺寸,所以我需要延迟渲染,直到我知道视图在 DOM 中。
问题是Marionette.CollectionView
在渲染之前不会将子视图添加到 DOM。如何在不重新实现一半的情况下覆盖此行为CollectionView
?
示例代码
jquery-mobile - 带有木偶或卓别林的 jQuery Mobile?
过去我使用 Backbone 编写了几个基于 Web 的应用程序,但现在我正在使用 Backbone.js 和 jQuery Mobile 开始一个新的移动应用程序。我正在考虑使用Marionette或Chaplin来帮助提供更好的结构、视图管理和内存管理。最终,这将使用 PhoneGap 完成,以部署为企业应用程序。
但是,我似乎找不到任何可以表明其中任何一个都可以与 jQuery Mobile 一起工作(或不工作)的东西。为了从中获得最大的好处,我知道我必须禁用 jQuery Mobile,这很好。我还看到了一些关于require.js 和 JQM 也不能很好地协同工作的问题。那么有没有人知道使用这些 Backbone 框架中的任何一个来开发移动站点是否容易,并且可以很好地与 JQM 配合使用?或者有另一个专门为与 JQM 一起使用而设计的基于 Backbone 的框架?
backbone.js - 在显示另一个视图时隐藏区域管理器中的视图
我正在使用 Marionette 区域管理器来管理我的视图。有三个主要区域:1]顶部菜单区域2]侧边栏区域3]主区域(实际页面不断变化)
根据顶部菜单和侧边栏上的操作,我不断更改在主要区域中呈现的视图,使用App.MainRegion.show(view)
.
现在有一个特定的 view( persistView
) ,除非关闭选项卡/浏览器,否则不应关闭它。
App.MainRegion.show(view)
当然,出于以下原因,我不能使用这里:
- 当
show(persistView)
第一次调用时,一切都很好。 - 如果我离开了,意志的
show(otherview)
召唤close()
。persistView
这不是必需的。
我目前的解决方案是:
persistRegion
在 .下方有一个名为的新区域mainRegion
。persistView
将始终呈现在persistRegion
.- 在
onShow()
中persistView
,我隐藏mainRegion
并显示peristRegion
以上工作,但我认为是非常hackish。当在第 3 步之后] 用户导航到任何其他视图时,我也被卡住了。现在我如何告诉persistView
它应该隐藏自己并显示mainRegion
?
任何帮助将不胜感激。
backbone.js - 使用backbone.marionette的外部模板
使用 Backbone.View 我曾经以这种方式获取外部模板(1)
如果我想使用 Backbone.Marionette.Layout 从外部文件中获取模板怎么办?(2)
(1)
(2)
backbone.js - 带有 itemview 的dirtyFields
我有一个使用骨干木偶构建的主/详细应用程序。当用户单击主行时,详细信息将显示行详细信息。
用户需要能够编辑该行。如果他们在保存之前尝试“离开”该行,我希望通知他们。我在想我会为这个功能使用dirtyFields插件。
有没有其他人一起使用这些?当我换出我的 itemview 时,如何初始化插件?当我关闭视图时,有什么我应该考虑清理视图的吗?
任何想法将不胜感激。
谢谢
javascript - 为什么当我将数据选项添加到主干模型提取时,它不会触发回调
我正在直接在主干中使用模型进行简单的提取。
这完美地工作。
但是我想在请求中发送一个参数,但是当我这样做时,它会停止工作吗?没有错误报告?
任何人都可以帮忙吗?请求看起来像是完美地从服务器返回?
marionette - 从子视图冒泡的事件无法按预期工作
我想使用集合视图的冒泡行为,但它似乎不起作用。
一点上下文:我显示一个模式AddPartFromPurchase
,显示一个填充了 collectionView 的表。这很好用。
当用户单击一行时,itemview 会触发purchase:chosen
事件,因此根据文档,我希望集合视图接收itemview:purchase:chosen
事件,但不会触发此类事件:既不是 in 也不AddPartFromPurchase
是Purchases
. :(
这是示例代码。
也许我做错了,我onRender
对el
在initialize
.
我该如何处理?
backbone.js - 我应该如何引导我的网络应用程序?
我正在寻找使用和引导我的网络应用程序Backbone.Marionette
的最佳方式。
以下实现有效,但我想知道这是否是正确的方法。Backbone.Router
Requirejs
这是我的一些代码(*)。
我的问题是:
1)以下数据流(index.html
-> conf.js
-> router.js
-> app.js
)是否正确?
2)Backbone.View
对于每个区域(header
,sidebar
.....)应该根据上下文在router.js
或app.js
或展位中实例化?