问题标签 [glimmer.js]
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.
ember.js - 带有 Ember Glimmer 组件的自闭合 void 标签
我正在将 Ember 应用程序升级到最新版本 (3.17),并且遇到了新 Glimmer 组件的问题。不必指定标签名称很好,但我不确定如何处理自闭合 void 元素,例如
标签。很明显,您可以将组件包装在结束标记元素中
但我没有遇到任何使用自闭标签的例子。
提前谢谢了。
ember.js - 属性更新后,emberjs 子组件不会重新渲染
我有一个页面组件(五个为什么),其中包含许多输入,用户可以选择这些输入来完成输入。当用户单击 finalize 时,所有问题都将被禁用。
页面组件
五个为什么.hbs:
五个为什么
当我的富文本组件只是一个常规文本区域时,这可以正常工作。但是,我正在尝试实现 tinymce,这需要我在 Embers 小安全魔法空间之外做一些事情。
我的富文本组件:
模板:
打字稿:
当我单击 finalize 按钮时,富文本组件中 disabled 标志的效果不会改变。
笔记:
我使用的 tinymce 库将文本区域显示设置为无,将 aria-hidden 设置为 true。这是因为它将文本区域包装在一个小部件中。所以我必须使用库的 api 来设置禁用。
node.js - 如何找出在 ember fastboot 中运行应用程序时发生错误的原因
我正在尝试将第三方 npm 库(如 npm 包之类的编辑器npm i @editorjs/editorjs --save-dev
)集成到具有自动加载功能的 ember 应用程序中"ember-auto-import": "^1.5.3",
没有快速启动一切正常,但在快速启动应用程序崩溃并出现以下错误:
fastboot
模式检查就像this.fastboot.isFastBoot
不能解决问题一样,即使我只是 import 看起来也会抛出错误@editorjs/editorjs
。也许有人遇到过,所以准备好任何信息来获得挖掘的方向。
创建组件示例:
环境:
更新:
看起来像第三方 npm 库中的问题,原因didInsertElement
不应该在所有fastboot
作为解决方法,我将此库添加为incompatible JavaScript
看起来这种方法可以解决问题。但无论如何,这个问题仍然是我想了解崩溃原因的实际原因,在这个错误之后fastboot
需要重新加载并且不能更多地工作。预期的行为 - 一些没有完全崩溃的错误。
typescript - 具有可变属性名称的 emberjs glimmer 对象 set()
我在 Ember 3.15 中有一个组件,我正在尝试做类似的事情
它似乎在浏览器中工作正常,但打字稿将设置行标记为错误(特别是 propertyName 参数)。所以如果它有效,为什么打字稿不喜欢它?
这似乎也发生在 get() 中,它不喜欢变量 propertyNames like get(this, propertyName)
。
javascript - 嵌套的 JS 装饰器获取/设置,如何正确链接它们?
该ember
框架积极地采用了装饰器。现在为了使用数据绑定,我必须装饰我的属性,@tracked
每当我更改属性时,我都会使用它来更新我所有漂亮的 UI。
这很好用,但是如果我需要在跟踪的装饰器之上添加自定义装饰器,我会遇到一些严重的问题。
通过让我的@typed
装饰器检查它是否在另一个装饰器之上,我可以让它工作。
但这感觉很奇怪……而且看起来不像我见过的描述符的任何用法。主要是因为如果我改变装饰器的顺序,事情就会爆炸
所以我想我的问题是,链接具有get
&的装饰器的正确方法是什么set
?在我看来,装饰器的顺序决定了我是否可以上链/下链。在我看来,这种链接逻辑必须融入到每个装饰器中,否则它不起作用。有没有一些通用的方法可以将装饰器传递给其他装饰器?
我已经看到了一些示例,其中我返回了描述符引用,但这似乎对这里的问题没有帮助,因为我不太确定如何get/set
在不擦除属性属性链或进入同一条船上的情况下仍然可以注入我的如上所述,我的代码必须设计为专门与其他描述符一起使用。
顺便说一句,这种方法给出了不同的爆炸。
unit-testing - Glimmer 中的组件单元测试
对于经典的组件单元测试,我们如何将其迁移到 Glimmer?此组件单元测试正在测试未向用户公开的本地道具。
ember.js - 转换为 Glimmer 组件——服务中的动态属性
我正在尝试构建一个 Glimmer 组件,该组件对服务中的属性更改做出反应,请参见下面我试图让组件更新 get 播放以响应 audioPlayer url 和状态的更改——播放时更改在下面的播放操作中按下按钮....这不起作用,我无法找到任何文档来支持这种类型的行为。
ember.js - Glimmer VM 中的“基于拉取的函数式反应程序”是什么意思?
正如我在本文中看到的“基于拉取的函数式反应程序”的概念:https ://engineering.linkedin.com/blog/2017/06/glimmer--blazing-fast-rendering-for-ember-js--第2部分
据我所知,“pull-based”意味着我们必须使用定期轮询的方式来根据状态的最新值检查和更新 UI。但是我认为如果应用程序有很多状态并且它们实际上大部分时间都不会经常更改,那么会有很多浪费的“轮询”,甚至可能导致应用程序运行效率低下。
所以,我认为这里应该有一些我错过的东西,我怎么能理解呢?
虽然 VM 架构是一种新颖的建模渲染方式,但 VM 的初始执行设置了 Reference 和 Revision Tag 子系统,这使我们能够对用于更新 UI 的基于拉的功能反应程序 (FRP) 进行建模。这在实践中意味着没有观察者或订阅的概念来保持 UI 中的值更新,而是我们允许模板中的支持值自由变化。目前,概念化该系统的最简单方法如下:
ember.js - Glimmer.js 如何在不使用构造函数的情况下将跟踪的属性重置为初始值
在 Glimmer.js 中,不使用构造函数将被跟踪属性重置为初始值的最佳方法是什么?
注意:不能使用构造函数,因为它只在初始页面渲染时调用一次,并且在后续页面点击时不再调用。
ember.js - 这是 @cached 用于自动跟踪 Ember Octane 的有效用法吗?
最近我在编写带有自动跟踪功能的 Glimmer 组件时遇到了@cached
from tracked-toolbox的用例。这是一个示例代码片段:
如果不使用@cached
,上面的代码在渲染时会执行output
3 次 getter,每个执行一次msg
,link
和name
。
我也考虑过为output
.
据我了解,@cached
提供的是对自动跟踪系统中“全局标签”的访问,因此我可以依靠该标签来确定缓存何时需要刷新。
由于我目前从事的公司项目不支持此功能,因此我希望这种用法可以鼓励我们以后添加此类支持。
注意:我发现这@cached
是方便的包装
所以基本上我需要的是@glimmer/tracking/primitives/cache
.