问题标签 [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 - 如何在模型中没有定义名称的情况下迭代车把模板中的数组
我有模型:
在车把中迭代的代码:
我如何定义 xxx ?
如果 JSON 在模型中有名称,例如:
我会简单地迭代车把,例如:
javascript - Marionette.CompositeView 中的模板助手
我不知道为什么这段代码不起作用。
阅读文档,应该调用
。templateHelpers
我的目标是将 传递this.collection.length
给模板。
有什么提示吗?谢谢。
我正在使用 Backbone.Marionette v0.9.5
要解决我的问题,我必须执行以下操作...
有没有更好的方法让它工作?
javascript - Backbone.Marionette 没有方法 'bindTo'
第一次尝试木偶。按照此处的示例:
我收到此错误:
我还尝试从示例中复制/粘贴整个代码片段,这也会引发该错误。那么我错过了什么?
backbone.js - 管理与可见视图共享同一模型的隐藏主干视图
我们已经使用 Backbone 几个月了,但我们认为当隐藏视图与可见视图共享模型时,必须有更好的方法来处理它们。例如,我们有一个“View Segment”视图和一个“Edit Segment”视图,它们都代表一个“Segment”模型。其中一个总是在任何给定时刻隐藏,但是,仍然侦听与另一个相同的事件(包括 ajax 调用)。为什么我们只是隐藏视图而不是替换的原因是我们希望最小化更改视图之间的加载时间,因为视图显示大量数据和 dom 元素。我们认为隐藏视图在可见之前不必渲染。
是否有处理这种情况的适当(最佳实践)方法?你会如何处理这个问题?有没有一种简单的方法可以暂时禁用整个视图的事件监听?
javascript - 限制集合 - .first 不适用于 CompositeViews
我想显示前 100 个条目,或集合中 101 到 200 之间的条目。
如果我创建一个 Marionette CompositeView 并指定
我得到一个错误。只有通过才myCollection
有效。什么是正确的语法?
backbone.js - 骨干木偶事件.EventAggregator和测试
我的测试有时间问题。我正在使用事件聚合器来引发事件,问题是我的规范在代码到达引发的事件之前完成。我需要在事件代码运行后运行规范。
例如,我正在创建一个布局,然后引发一个事件:
然后在创建布局后创建另一个视图:
问题是我的规范在运行此代码之前完成:
我的选择是要么从测试中触发事件,要么将代码从“layout:rendered”事件处理程序中重构为我“设置”并从我的测试中调用的方法。
我很好奇是否有人有更好的主意?
backbone.js - 何时使用 bindTo、绑定或与 Backbone.Marionette 一起使用?
这次我正在努力使用不同的方法来绑定事件。我的代码中有所有提到的方法。我只是不知道,如果我走对了。也许我应该总是使用 bindTo 来确保我的视图在更改后完全关闭(目前这通常会产生错误)?是否有任何最佳实践可以帮助我朝着正确的方向前进?
为了说明我目前对 Marionette 的理解,这是我的应用程序中的一个模块。一如既往,每一个提示都非常受欢迎。
backbone.js - 应用程序启动和 Backbone.Marionette 模块的问题
不幸的是,我在理解 Backbone.Marionette 模块和子模块的启动时遇到了问题。初始化器被多次调用,而不是每次被调用一次。
我需要做什么才能使事情以可预见的方式工作?
(代码也可用作JSFiddle)
上面的代码在控制台中输出以下行:
- 应用程序启动
- 路由.init
- ProductsRouting.init
- 路由.init
- ProductsRouting.init
- 产品.init
- 产品.init
这就是我所期望的:
- 应用程序启动
- 路由.init
- 产品.init
如果您决定使用您的应用程序自动启动所有模块(所有模块中的 startWithApp: true 并且无需手动启动 Routing 和 Products 模块),则输出是这样的:
- 路由.init
- ProductsRouting.init
- ProductsRouting.init
- 产品.init
- 应用程序启动
backbone.js - 如何根据模型 javascript 数组属性正确显示 Backbone Marionette 集合视图?
*更新:请参阅下面最后一个代码块中的最终答案代码。*
目前,我在集合视图中显示集合时遇到问题。集合是现有模型的属性,就像这样(伪代码)
所以本质上 ApplicationVersion 有一个名为 ApplicationCategories 的属性,它是一个 javascript 数组。目前,当我渲染与 ApplicationCategories 关联的集合视图时,没有渲染任何内容。如果我在 Chrome 的 javascript 调试器中进行调试,则似乎尚未填充类别(因此我假设尚未获取 ApplicationVersion)。这是我目前的代码
ApplicationCategory 模型、集合和视图
ApplicationCategory 模板
ApplicationVersion 模型、集合和视图
这是我的 ApplicationVersion 模板
需要注意的一件事我目前正在使用 Sinon 来模拟我的服务器响应,但我认为这不会导致问题,因为它正在响应我期望通过 javascript 调试器查看的信息(就像我说它正在显示 ApplicationVersion id 正确)。如果有帮助,我也可以提供此代码
它当前正在显示应用程序版本 id(模板中的 id),所以我知道它正在为普通属性正确获取数据,它只是没有呈现我的 ApplicationCategories javascript 数组属性。
所以最终我绑定到 ApplicationVersion 获取的成功,然后为 ApplicationCategories 设置视图。由于这不像我期望的那样工作,我想知道是否有更好的方法来创建这个集合视图?
谢谢你的帮助
更新:Derek Bailey 也带领我的工作代码示例。
javascript - 骨干网中的智能轮询
为了不断更新 Marionette.CompositeView (2),我实现了一个长轮询模块,如下所示 (1)。
我想让这个投票更智能。
详细地说,我希望这个轮询不应该获取集合,而只检查新元素以避免再次呈现所有视图。
有任何想法吗?
(1)
(2)