问题标签 [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.
backbone.js - Backbone.Marionette model.destroy 问题
我有非常简单的主干模型和集合。我有一个相应的backbone.marionette.CollectionView 和backbone.marionette.ItemView,他们住在一个backbone.marionette.region。
ItemView 模板包含一个“删除”按钮。删除按钮的点击事件发出一个model.destroy()。向后端发出 HTTP DELETE,但它似乎发出了两次,并且因为第二次失败,该项目没有从集合中删除。
其他一切工作正常,只是发出了两次 HTTP DELETE。知道为什么吗?
我正在使用 Backbone.Marionette 版本 v0.4.5
backbone.js - 在骨干木偶中正确配置父子关系的路由器
试图创建一个页面,允许用户添加编辑和查看父子组合。
UI 有 3 列 Parent : List of parents Children : Child
我想配置控制器,以便用户可以回到他们所在的位置,但不需要拥有它,这样父和子都可以编辑。
// 使用骨干牵线木偶靠近,但仍有一些小问题
拥有“this.ViewClient”会让人感觉很笨拙,而且也不起作用。
backbone.js - Backbone 可以以相反的顺序呈现集合吗?
我正在使用 Signalr 集线器订阅服务器上的事件。将什么事件分派到集线器,它成功地将项目添加到 Marionette CollectionView。反过来,这会呈现到表格中。
因为事件表本质上是一个吸墨纸,所以我希望事件以相反的顺序排列,最好只保留 n 个事件。
Backbone 可以“自动”以相反的顺序重新渲染集合吗?
templates - 如何在backbone.marionette 中使用EJS 模板?
到目前为止,我一直在我的 Rails/Backbone.js 应用程序中使用 EJS 模板。我真的很想开始使用backbone.marionette。我该怎么做才能使它与 EJS 一起工作?
它在文档中说我需要为template
属性提供一个 jQuery 选择器,但我认为我的 EJS 模板没有。
更新:
这就是我使用模板正常呈现视图的方式:
我有模板文件夹,其中包含item.jst.ejs
如下文件:
我的模板文件夹包含在application.js
backbone.js - 捕获div上的滚动事件
我试图在 Backbone.Marionette.CompositeView 中捕获滚动事件,但没有成功。
作为练习,我正在使用 Backbone.Marionette重写http://www.atinux.fr/backbone-books/ 。如您所见,当您向下滚动时,会获取并显示更多书籍(即无限滚动)。但是,我无法在我的视图中捕获滚动事件。
这是我的(简化的)代码:
完整的源代码可以在这里看到:https ://github.com/davidsulc/backbone.marionette-atinux-books/blob/scroll/assets/javascript/app.js#L86-89
我不明白的是“点击”事件被正确触发,但“滚动”事件没有。我究竟做错了什么?
编辑:所以错误最终非常简单......我将“el:#content”传递给视图的构造函数,但滚动是在“.library”上的CSS中定义的。所以一旦我改变了我的DOM
到
一切正常...
javascript - Backbone(也包括 Marionette)试图在集合开始时显示新记录,而不重新渲染整个集合
我正在尝试在集合开始时呈现一个项目(想象一下,如果你在 facebook 上发布一条新记录)
当我来 add(response, {at: 0}); 到集合中,记录在 0 处正确插入到集合中,但呈现在项目列表的底部。我很困惑,因为我以前做过这个工作,但我认为我在做的是一种 hacky 风格,只是重置并重新渲染集合。
我想知道处理这个问题的整洁方法是什么,我应该在哪里绑定逻辑。
是在集合的 add 方法上吗?目前这是空的(但我正在使用 Marionette),我觉得这会覆盖骨干的默认渲染。我如何再次控制它,这样我就可以正确地将我的新项目添加到列表中,而不会全部破坏并重新创建它。
javascript - 使用哪个组件来实现菜单?
我想显示一个菜单,如:
如您所见,My lightsabers
菜单是项目列表,但添加新光剑的链接是独立的。
我相信我应该使用 aCollectionView
来渲染光剑列表,但是如何渲染“添加”链接?
你有这样的菜单的例子吗?
这个问题可以概括为:如何自定义 Marionette 呈现的 HTML 位而不破坏它所做的事情?
javascript - fetchRelated 使用 Backbone.Relational 和 Backbone.Marionette 和 Backbone.ioSync 获取后
我正在使用 Backbone.Relational 与 Backbone.Marionette 和 Backbone.ioSync 来同步 socket.io。
更具体地说,我有一个模型A
,它通过关系hasMany
实例化模式。在加载时,一切都很好:数据已正确初始化和渲染。然后,另一个客户端添加了to的另一个实例。服务器向第一个客户端发送 ping,这导致它调用. 在 fetch 的成功方法中,我调用. fetch 方法只返回关系的 ID 列表,触发on ,导致 Backbone.Marionatte 的集合视图创建项目视图的新实例以显示 new ,这会破坏站点,因为尚未获取新的.B
bees
B
A.bees
A.fetch()
A.fetchRelated('bees')
bees
change
A
B
B
试图强制 B 的视图渲染与 A 中定义的延迟对象同步,这听起来像是一个复杂的 hack,可能需要处理许多边缘情况。
一种想法是允许fetch
接受该silent
选项。但是在. change
_ _add
success
fetch
另一个想法是让服务器上下文上的序列化代码感知并在添加新项目时发送整个对象,而不仅仅是 ID。这也是次优的,因为当将整个相同的 B 添加到不同的 A 时,可能会导致不必要的转移。它还给服务器代码增加了很多复杂性,因为上下文需要在整个序列化过程中传播。
关于如何解决这个问题的任何想法或建议?只要可行,我对可能需要更改 Backbone.Marionette 或 Backbone.Relational 的解决方案持开放态度。
javascript - Backbone.Marionette vs Backbone-Boilerplate
我是 Backbone 的新手,正在尝试决定如何进行开发。
目前我想知道人们什么时候会使用backbone.marionette而不是backbone-boilerplate?
据我所知,Marionette 更具规范性,但这是大多数人在这里进行开发的方式吗?