Každá položka na této stránce má stejný tvar: build je zelený, audit čistý, konzole mlčí a obrazovka je prázdná nebo ukazuje něco jiného, než jste zamýšleli. Překladač tyhle chyby nevidí, protože každá z nich je platný program, který jen popisuje jinou komponentu. Najděte nadpis, který zní jako to, co vidíte; pod ním je příčina a náprava.
Název ve view.tree a název metody ve třídě se liší, nejčastěji velikostí písmen: exchange_form ve stromě, exchangeForm ve třídě. To jsou dvě vlastnosti. Tu ze třídy nikdo nevolá, ta ze stromu zůstane u výchozí hodnoty a nic to nehlásí.Názvy jsou všude snake_case a musí se shodovat písmeno po písmenu. Po úpravě .view.ts zkontrolujte, že každé přepsání pořád pojmenovává existující vlastnost; vygenerovaný -view.tree/*.view.tree.d.ts vedle stromu je ten seznam k porovnání.
Tohle jsou vlastnosti $mol_string: hint pro placeholder, enabled pro zakázaný stav, type pro typ vstupu. Nastavte je tam, kde se vstup používá:1<= Password $mol_string2 hint \Password3 type \password4 enabled <= can_edit true5 value?<=> password?\Kteroukoli jinou vlastnost kterékoli jiné komponenty najdete stejně: otevřete její .view.tree, jak ukazuje Jak číst zdrojové kódy.attr* slouží pro skutečné DOM atributy, které komponenta ještě nemodeluje, a má vlastní past: blok bez ^ na prvním řádku nahradí celý slovník atributů základu, takže $mol_button napsaný takhle přijde o disabled, role a tabindex. Začněte blok znakem ^, ať zdědíte, a pak přidejte své klíče:1attr *2^3 data_kind \primary
Řetězec se dostal tam, kde se čeká seznam, a byl rozložen znak po znaku. Řetězce začínají \, seznamy /. Obvyklý případ je sub, což je seznam:1sub /<= label \Hello
Přepsání vypadlo z .view.ts. Strom dává každé vlastnosti výchozí hodnotu, takže když třída přestane předefinovávat rows(), TypeScript je spokojený a seznam se vykreslí prázdný. Testy, které kontrolují jen model, zůstanou zelené, protože s modelem je všechno v pořádku.Pro každé přepsání, na kterém obrazovka závisí, napište test, který čte to, co vidí uživatel: rows(), sub(), title() podpohledů nebo DOM. Testování ukazuje obojí.
Metoda @ $mol_mem vrátila jako hodnotu příslib: fetch(uri).then(...), metodu async nebo výsledek $mol_wire_async(this).load(). Příslib v buňce se pro všechny čte jako „ještě počítám“ a jakmile se vyřeší, buňka se přepočítá a vyrobí čerstvý příslib. Síť funguje; pohled výsledek nikdy neuvidí.Správný tvar je synchronní: zavolejte this.$.$mol_fetch.json(uri) uvnitř buňky a vraťte rozparsovanou hodnotu. Vlákno se pozastaví, dokud odpověď nedorazí, a pak buňku spustí znovu, takže se příslib ve vašem kódu vůbec neobjeví. Tam, kde se asynchronní práce musí odehrát jinde, odložte její výsledek do samostatné stavové buňky a efekt ať vrací příznak nebo klíč, nikdy příslib.Druhá příčina je spolknutá chyba: try/catch uvnitř buňky, který chytí pozastavení spolu se skutečnými selháními. Vše, co je Promise, vyhoďte dál, nebo použijte $mol_fail_catch, které tuto kontrolu udělá za vás.