Ich ertappe mich oft dabei, nach Importen für verschiedene Dinge zu suchen, wenn ich eine Theme Component erstelle. Deshalb habe ich beschlossen, eine Reihe davon zusammenzustellen und hier abzulegen.
Ember-bezogen
| Name | Import | Verwendung |
|---|---|---|
| Component | import Component from "@glimmer/component"; |
export default class MyComponentClass extends Component {} |
| Action decorator | import { action } from "@ember/object"; |
@action |
| Tracked decorator | import { tracked } from "@glimmer/tracking"; |
@tracked myTrackedVar |
| Service decorator | import { service } from "@ember/service"; |
@service modal |
| (Glimmer-Template) on | import { on } from "@ember/modifier"; |
<p {{on "click" this.someAction}}>Klick mich!</p>[1] |
Discourse-bezogen
| Name | Import | Verwendung |
|---|---|---|
| apiInitializer | import { apiInitializer } from "discourse/lib/api"; |
export default apiInitializer((api) => {}) |
| withPluginApi | import { withPluginApi } from "discourse/lib/plugin-api"; |
withPluginApi((api) => {})[2][3] |
| ConditionalLoadingSpinner | import ConditionalLoadingSpinner from "discourse/components/conditional-loading-spinner"; |
<ConditionalLoadingSpinner @condition={{this.loading}} /> |
| DButton | import DButton from "discourse/components/d-button"; |
<DButton @icon="..." @action={{this.someAction}} /> |
| ajax | import { ajax } from "discourse/lib/ajax"; |
ajax("/path/here")[4] |
| i18n | import { i18n } from "discourse-i18n"; |
{{i18n "locale_key"}}[5] |
| (Glimmer-Template) Equals, not equals, greater than, greater than or equals, less than, less than or equals, or, not, and, has, includes | import { eq, and, ... } from "truth-helpers"; |
{{#if (eq this.something this.something2)}}[6] |
Sie werden sehen, wie sie kombiniert werden, z. B. getrackte Variablen als Bedingung für ConditionalLoadingSpinner oder Aktionen für DButton usw.
Ich hoffe, das hilft!
Ich bin kein Profi, also wenn Sie Ungenauigkeiten bemerken, helfen Sie bitte mit der Korrektur oder weisen Sie darauf hin, danke
.
Sie können auch Events wie
input,mousedown,focusinusw. verwenden ↩︎Siehe discourse/app/assets/javascripts/discourse/app/instance-initializers/enable-emoji.js at 99ace1be120b928f6c694d0118959d745cc4bdbe · discourse/discourse · GitHub ↩︎
Ich denke, es wird empfohlen, stattdessen
apiInitializerzu verwenden; ich glaube, das ist die alte Version? ↩︎Funktioniert ähnlich wie
fetch(). Fügen Sie dies in eineasync-Funktion mit dem Schlüsselwortawaitein. ↩︎Wenn Sie die Locale aus dem Core-Repo beziehen, z. B. user.summary.stats ↩︎
Dinge wie
andundorkönnen mehr als 2 Argumente haben ↩︎