免责声明:对目前的发展方向非常满意,并感谢迄今为止所做的所有工作,因为新系统具有强大的功能。只需要确保我们保留一些等效的功能?…
在我的组件 TLP 中,我目前正在动态设置主题列表项外部标签的样式属性:
- 将
background: 颜色设置为唯一的 RGB 值,以匹配图像的主色调。这应该在 Ember 循环中完成。
我还设置 grid-row-end 来快速确定网格元素的尺寸。这非常快速且高效,并避免了大量 Javascript。但是,为此我使用了 Javascript,因为它依赖于 DOM 中的最终尺寸。
目前这些可以很好地共存。

<tr> style="background: rgb(56, 10, 58); grid-row-end: span 48;" data-topic-id="23321" id="ember168" class="topic-list-item category-uncategorized tag-inforunners visited white-text has-thumbnail tiles-grid-item ember-view" data-is-last-viewed-topic="true">
这些都是主题组件的关键自定义,没有它们,它将无法支持。
这种对样式的第一次修改目前是通过直接的样式属性绑定和 modifyClass 实现的,但我知道这是一个已弃用的方法。
在新环境中,能否为此提供 API?
或者,也许我错过了现有的方法?
然而,我认为这无法通过类来实现。
3 个赞
需要澄清几点。
modifyClass 是否仍然有效?(只是更新了语法——如果有效,最好引用该指南)
- 我是否仍然可以使用它来访问封闭标签的 style 属性?
经典组件的不同之处在于,它们历来允许在模板之外访问封闭标签级别的属性,因此在代码中动态修改它们非常简单。
1 个赞
david
(David Taylor)
7
modifyClass 本身并未弃用。它是一种有风险的自定义方法,在使用时应采取预防措施(如 @don 链接的文档中所述),但我们目前没有立即移除它的计划。
我们打印 component:topic-list 和 component:topic-list-items 弃用消息的原因是,这些组件是主题列表的旧实现,在启用 Glimmer 主题列表时不会使用。现在,我们有一组 Glimmer 组件,例如 components/topic-list/item。
因此,从技术上讲,您可以在这些新组件上使用 modifyClass。但是,由于它们是 Glimmer 组件,您将无法通过 JS 类修改样式标签,因此这无助于解决 OP 中的问题。
我们在官方的 d-topic-thumbnails 主题组件中有一个类似的“砌体”模式,所以值得看看它是如何实现的。我们为主题列表的每个“行”添加了一个唯一的类:
然后,我们在单独的 plugin-outlet 中渲染一个动态的 <style> 标签,该标签会定位这些类名:
话虽如此……这有点复杂,所以也许我们应该考虑添加一个特定的 valueTransformer 来允许更改 style= 属性。由于 Ember 对该属性的 xss/htmlSafe 保护,这有点棘手……但我相信我们可以让一些东西起作用。
3 个赞
大卫,我还有另一个问题,是否可以通过新 API 挂钩 Glimmer 事件,例如 didInsert、didUpdate、willDestroy?
例如,我想在 didInsert 上运行一些额外的 JavaScript,目前这是通过 @on 和 modifyClass 处理的。
(我很乐意为此创建一个新主题)
我现在将尝试你的技术:
1 个赞
david
(David Taylor)
10
我们可以在某些地方引入特定的转换器。但我认为我们不会添加一个通用的 API 来允许你挂钩到任何元素/组件。
至于 style= 属性的讨论,我创建了这个 PR。我会尝试让它被审查/合并:
3 个赞
谢谢。到目前为止,您的当前技术进展顺利,我已经为 TLP 定制了它,并且它似乎运行良好。如果我发现任何其他潜在的漏洞,我会恢复。
太棒了!等它合并的时候我应该就准备好了,我很期待!谢谢 David!
3 个赞
system
(system)
关闭
13
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.