问题标签 [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 - CoffeeScript/Backbone/Marionette - 教程示例转换和范围问题
我正在尝试在 CoffeeScript 中创建此示例的基本版本:http: //davidsulc.com/blog/2012/04/15/a-simple-backbone-marionette-tutorial/。所有依赖项都按照我编写它们的顺序(在正文中)声明为 .coffee 文件,并且 jQuery + Underscore + Backbone + Marionette 在头部。
我有一个模型,thing.coffee
我的第一个问题是范围界定:如果我不声明window.Thing
,下一个文件(的集合Things
,找不到模型Thing
等等。我在那里做错了什么?
我有一个收藏,things.coffee
我有一个木偶视图,thing_view.coffee
我有一个木偶视图,things_view.coffee
我有一个应用程序myapp.coffee
我的 html 文件如下所示:
继console.log
:
所以,不用说我对发生了什么感到困惑——我敢肯定这里有很多问题,所以请帮忙!
marionette - 作用于 onRender 中的元素不起作用
当我尝试对onRender
方法(或item:rendered
回调)中的某些 HTML 元素进行操作时,它会失败。
例子:
其他操作也是如此,例如将焦点放在某个领域。
你怎么处理?有效的技巧,setTimeout
但它不是很优雅。
backbone.js - 处理对象的子集
什么是如何处理对象子集的好模式。
假设我有一个储物柜列表,每个储物柜内都有一组物品。UI 与此类似——我们希望 ASCII 艺术能够通过。
储物柜#2 被选中(激活)。我一直在做的是在储物柜#2 被激活时设置回调,然后执行 ItemCollection.fetch({ data: { lid: LOCKER_ID }}) 来获取准备显示的项目子集。感觉不太像骨干。
有什么更好的方法 -
- 加载模型的子集 - 如果是这样,是否有一个很好的例子来说明如何做到这一点?
- 加载所有内容然后对集合进行主干过滤?
- 也许是一个合适的分页示例?
javascript - 我的一些应用程序初始化程序似乎没有触发?
我有一个名为的顶级应用程序SearchApp
,它有一个名为TeamApp
. 这些文件的结构如下:
我在以下位置初始化我的应用程序search_app.js.coffee
:
并在 html 视图中启动它:
子模块TeamApp
分布在几个文件中(如下)。问题是TeamApp
模块中的某些文件似乎无法将初始化程序添加到SearchApp
. 事实证明,我可以console.log
在一个文件中进行初始化,但不能在另一个文件中进行初始化。
不能将一个模块拆分为多个文件吗?这是我能想到的唯一事情发生在这里。还有什么可能导致问题?
javascript - 视图未渲染,区域与布局
即使在阅读了 wiki 和关于何时使用布局与区域等的示例之后,我仍然有点困惑,但我的问题是我无法在页面上显示任何内容 - 根本没有任何渲染。html应该真的只有菜单和内容,内容可以根据Views改变。(我以同样的方式制作菜单,所以我也可以交换它)。
我有一个 html 文件:
对于这个例子,我已经将 js 压缩成一个文件,app.coffee:
console.log 显示:
我已经阅读了文档/示例一百万次,但是所有这些东西的学习曲线都很复杂。请帮忙!
javascript - 将主干模型绑定到 Marionette ItemView - 阻塞 .fetch()?
这是一个两部分的问题。1)有没有更好的方法将模型异步渲染到视图?我目前正在使用fetch
模型中的方法发出 ajax 请求(尽管我在初始化时显式调用它),然后使用应用程序事件呈现模板化视图,该事件在调用方法vent
后从模型内部发布parse
。酷但不稳定?2)阻塞fetch
方法有用吗,有可能吗?
应用程序将其呈现到页面:
然后它获取模型并呈现:
但是,如果我不使用vent
触发器,它(预期)会呈现:
html模板:
应用程序.js:
javascript - 覆盖 .fetch() 适用于虚假数据、urlRoot 错误和实际模型 ajax 请求
我很困惑 - 我以为我的模型绑定工作正常,但它只是一个带有伪造 ajax 请求的 jsFiddle。我已将模型绑定到视图,如果我覆盖.fetch()
并伪造响应,一切正常(我可以更新模型并在页面上更新视图)。但是,当我不覆盖.fetch()
并使用urlRoot
参数并等待响应时,我会收到错误。
.fetch()
这是工作的 jsFiddle,在使用伪造的响应调用后呈现模型,而不是更改:
http://jsfiddle.net/franklovecchio/FkNwG/182/
所以如果我在服务器端有一个 API 调用:
/thing/:id
有一个示例响应/thing/1
:
我注释掉.fetch()
,我得到控制台错误:
.fetch()
注释掉的代码:
backbone.js - 如何同步代表相同对象但具有不同cid的两个模型?
在我的应用程序中,用户可以创建车辆。在“显示特定车辆”页面上,我有一个 Vehicle 实例(从Backbone Relational 扩展 RelationalModel)。当我改变车辆的头像时,这个模型就改变了。
在应用程序的另一个页面“显示车辆列表”中,我有一个显示用户车辆的画廊。模型(也是 Vehicle 的实例)在一个集合中。不幸的是,它们具有不同的 CID,因此当用户在显示页面中更改车辆的头像时,它们不会正确更新。
如何处理?我希望 9 号车辆在任何地方都一样。
backbone.js - 通过 fetch 刷新事件后未触发主干事件
我正在使用backbone.marionette 并具有以下CollectionView ItemView 组合:
我从嵌入在页面上的初始 json 集合创建视图。事件哈希中的事件完美运行。
然后在下拉更改事件中,我在集合上调用 fetch() 以检索新的对象集合。DOM 被重建,但事件处理程序没有被重新附加/
有谁知道为什么会发生这种情况?
javascript - 如何使用 Backbone.Marionette 构建用于将项目创建到列表中的应用程序?
这是使用 Marionette 时仍然让我感到困惑的一件事。
想象一个用于查看评论列表和发表新评论的简单界面。我目前构建它的方式与CommentApp
我在下面包含的类似。
我想我的问题有两个部分:
这是我应该如何构建这种类型的应用程序吗?我尝试尽可能遵循BBCloneMail 示例应用程序,但这似乎没有提供将新项目创建到集合中的示例。
为什么layout.listRegion
下面会返回undefined
我尝试调用.show()
它的地方?更一般地说,是否有一种确定的方法来处理触发和绑定到'layout:rendered'
具有嵌套布局的事件。它似乎变得相当混乱。
该'comment_layout'
模板只是一个基本的容器模板:
我正在使用JST
它来渲染它。我已经用这段代码覆盖了渲染函数: