smalljs$molSuche⌘ KDokuPlaygroundVergleichÖkosystemÜberDE
FehlerbehebungGetting StartedEinführungMentales ModellErste SchritteVon TypeScript zu view.treeProjektstrukturWerkzeugeEssentialsInstallationViewsZustand und ReaktivitätRoutingRenderingTestenDeploymentFehlerbehebungDataDatenabrufDatenschemasGiper BazaMoreSchaufensterVon React, Vue und SvelteKochbuchAdvancedPluginsModul-MetadatenOfflineGhost-AnsichtenAboutFAQTeamReleasesAPI$mol_button_major$mol_button_minor$mol_string$mol_number$mol_text$mol_paragraph$mol_list$mol_row$mol_link$mol_check$mol_switch$mol_select$mol_scroll$mol_page$mol_pick

Fehlerbehebung

Jeder Eintrag auf dieser Seite hat dieselbe Form: Der Build ist grün, das Audit ist sauber, die Konsole schweigt, und der Bildschirm ist leer oder zeigt nicht das, was Sie gemeint haben. Der Compiler kann diese Fehler nicht sehen, weil jeder davon ein gültiges Programm ist, das eben eine andere Komponente beschreibt. Suchen Sie die Überschrift, die klingt wie das, was Sie sehen; darunter stehen Ursache und Behebung.

Meine Überschreibung einer Eigenschaft bewirkt nichts, keine Fehlermeldung

Der Name in view.tree und der Name der Methode in der Klasse unterscheiden sich, meistens in der Groß- und Kleinschreibung: exchange_form im Baum, exchangeForm in der Klasse. Das sind zwei Eigenschaften. Die der Klasse wird nie aufgerufen, die des Baums behält ihren Standardwert, und nichts meldet es.Namen sind überall snake_case und müssen Buchstabe für Buchstabe übereinstimmen. Prüfen Sie nach dem Bearbeiten einer .view.ts, ob jede Überschreibung noch eine existierende Eigenschaft benennt; die generierte -view.tree/*.view.tree.d.ts neben dem Baum ist die Liste zum Abgleich.

Ich brauche Placeholder, disabled oder type an einem Eingabefeld

Das sind Eigenschaften von $mol_string: hint für den Placeholder, enabled für den deaktivierten Zustand, type für den Eingabetyp. Setzen Sie sie dort, wo das Eingabefeld verwendet wird:1<= Password $mol_string2 hint \Password3 type \password4 enabled <= can_edit true5 value? <=> password? \Jede andere Eigenschaft jeder anderen Komponente findet sich auf demselben Weg: Öffnen Sie ihre .view.tree, wie Wie man die Quellen liest zeigt.attr * ist für echte DOM-Attribute da, die die Komponente nicht ohnehin schon abbildet, und hat eine eigene Falle: Ein Block ohne ^ als erste Zeile ersetzt das gesamte Attribut-Wörterbuch der Basis, sodass ein so geschriebenes $mol_button disabled, role und tabindex verliert. Beginnen Sie den Block mit ^, um zu erben, und ergänzen Sie dann Ihre Schlüssel:1attr *2 ^3 data_kind \primary

Ein Wort wird Buchstabe für Buchstabe gerendert

Eine Zeichenkette wurde übergeben, wo eine Liste erwartet wird, und die Zeichenkette wurde Zeichen für Zeichen ausgebreitet. Zeichenketten beginnen mit \, Listen mit /. Der übliche Fall ist sub, das eine Liste ist:1sub / <= label \Hello

Der Bildschirm ist leer, die Tests sind grün

Eine Überschreibung ist aus der .view.ts herausgefallen. Der Baum gibt jeder Eigenschaft einen Standardwert, also ist TypeScript zufrieden, wenn die Klasse rows() nicht mehr neu definiert, und die Liste rendert leer. Tests, die nur das Modell prüfen, bleiben grün, weil das Modell in Ordnung ist.Schreiben Sie für jede Überschreibung, von der der Bildschirm abhängt, einen Test, der liest, was der Benutzer sieht: rows(), sub(), title() der Sub-Views oder das DOM. Testen zeigt beides.

Daten laden nie, eine Komponente hängt im Ladezustand fest

Eine @ $mol_mem-Methode hat ein Promise als ihren Wert zurückgegeben: fetch( uri ).then( ... ), eine async-Methode oder das Ergebnis von $mol_wire_async( this ).load(). Ein Promise in der Zelle liest sich für alle als „rechnet noch", und wenn es sich auflöst, rechnet die Zelle neu und erzeugt ein frisches Promise. Das Netz funktioniert; die View sieht nie ein Ergebnis.Die richtige Form ist synchron: Rufen Sie this.$.$mol_fetch.json( uri ) innerhalb der Zelle auf und geben Sie den geparsten Wert zurück. Die Fiber wird suspendiert, bis die Antwort da ist, und lässt die Zelle dann erneut laufen, sodass das Promise in Ihrem Code nie auftaucht. Wo asynchrone Arbeit anderswo stattfinden muss, legen Sie ihr Ergebnis in eine eigene Zustandszelle und lassen Sie den Effekt ein Flag oder einen Schlüssel zurückgeben, niemals das Promise.
Diese Seite auf GitHub bearbeitenWar das hilfreich?JaNeinZurückDeploymentWeiterDatenabruf
Auf dieser SeiteMeine Überschreibung einer Eigenschaft bewirkt nichts, keine FehlermeldungIch brauche Placeholder, disabled oder type an einem EingabefeldEin Wort wird Buchstabe für Buchstabe gerendertDer Bildschirm ist leer, die Tests sind grünDaten laden nie, eine Komponente hängt im Ladezustand festZirkuläres AbonnementMaximum call stackEin großgeschriebener Wert lässt sich aus TypeScript nicht überschreibenJede Zeile einer verschachtelten Liste zeigt dasselbe ElementIch habe die Klasse einer Sub-View geändert und ihr Inhalt ist verschwundenMethoden aus der view.ts einer Basiskomponente fehlen in der UnterklasseEine in derselben view.tree-Datei deklarierte Basiskomponente verliert ihr VerhaltenStyles laufen zwischen einer Sub-View und der Komponente darin überEin Selektor auf ein Attribut mit false trifft nie zuEine Zahl im Style bewirkt nichtsZwei Kinder einer Scroll-View liegen übereinanderminimal_height hat keine sichtbare WirkungEine eingebettete Komponente schiebt die Seite zur SeiteFremdes CSS stylt meine Komponente nichtEin Klick auf einen Link zur aktuellen Seite leert die URLMein Eingabe-Handler läuft bei jedem RendernDer Fehler aus meinem Wert-Setter erscheint nieEine Handler-Bindung mit Schlüssel wird als fehlend gemeldetDas Bundle enthält ein Modul, das ich nie benutzeWeiter
Type to search the documentation.