smalljs$molجستجو⌘ Kمستنداتزمین بازیمقایسهاکوسیستمدربارهFA
رفع اشکالGetting Startedمعرفیمدل ذهنیشروع به کاراز تایپ‌اسکریپت به view.treeساختار پروژهابزارهاEssentialsنصبنماهاوضعیت و واکنش‌گراییمسیریابیرندرتست‌نویسیاستقراررفع اشکالDataدریافت دادهطرح‌واره‌های دادهGiper BazaMoreویتریناز React، Vue و Svelteکتابِ آشپزیAdvancedپلاگین‌هافراداده‌های ماژولآفلایننماهای شبحAboutپرسش‌های پرتکرارتیمانتشارهاAPI$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

رفع اشکال

هر مدخلِ این صفحه یک شکل دارد: ساخت سبز است، ممیزی تمیز است، کنسول ساکت است، و صفحه یا خالی است یا آن چیزی نیست که می‌خواستید. کامپایلر این اشتباه‌ها را نمی‌بیند چون هرکدامشان برنامه‌ای درست‌اند که اتفاقاً کامپوننتِ دیگری را توصیف می‌کنند. عنوانی را پیدا کنید که شبیهِ چیزی است که می‌بینید؛ زیرش علت و راه‌حل آمده است.

بازنویسیِ ویژگی‌ام هیچ کاری نمی‌کند و خطایی هم نیست

نامِ درونِ view.tree و نامِ متد در کلاس فرق دارند، بیشتر وقت‌ها در بزرگی و کوچکیِ حروف: exchange_form در درخت، exchangeForm در کلاس. این‌ها دو ویژگی‌اند. آنکه در کلاس است هرگز صدا زده نمی‌شود، آنکه در درخت است پیش‌فرضش را نگه می‌دارد، و هیچ‌چیز گزارشش نمی‌کند.نام‌ها همه‌جا snake_caseاند و باید حرف‌به‌حرف یکی باشند. بعد از ویرایشِ یک .view.ts بررسی کنید که هر بازنویسی هنوز نامِ ویژگی‌ای موجود را می‌برد؛ فایلِ تولیدشدهٔ -view.tree/*.view.tree.d.ts کنارِ درخت همان فهرستی است که باید با آن مقایسه کنید.

به placeholder، غیرفعال‌کردن یا type روی یک ورودی نیاز دارم

این‌ها ویژگی‌های $mol_stringاند: hint برای placeholder، enabled برای وضعیتِ غیرفعال، type برای نوعِ ورودی. همان‌جا که ورودی استفاده می‌شود تنظیمشان کنید:1<= Password $mol_string2 hint \Password3 type \password4 enabled <= can_edit true5 value? <=> password? \هر ویژگیِ دیگری از هر کامپوننتِ دیگری به همین شکل پیدا می‌شود: فایلِ .view.treeاش را باز کنید، همان‌طور که چطور منبع‌ها را بخوانیم نشان می‌دهد.attr * برای ویژگی‌های واقعیِ DOM است که کامپوننت از پیش مدلشان نکرده، و تلهٔ خودش را دارد: بلوکی که خطِ اولش ^ نباشد کلِ دیکشنریِ ویژگی‌های پایه را جایگزین می‌کند، پس $mol_buttonی که این‌طور نوشته شود disabled و role و tabindex را از دست می‌دهد. بلوک را با ^ شروع کنید تا ارث ببرد و بعد کلیدهای خودتان را اضافه کنید:1attr *2 ^3 data_kind \primary

یک کلمه به‌صورت حرف‌های جدا رندر می‌شود

جایی که فهرست انتظار می‌رفت رشته داده شده و رشته حرف‌به‌حرف پخش شده است. رشته‌ها با \ شروع می‌شوند و فهرست‌ها با /. موردِ معمول sub است که یک فهرست است:1sub / <= label \Hello

صفحه خالی است، تست‌ها سبزند

یک بازنویسی از .view.ts بیرون افتاده. درخت به هر ویژگی یک پیش‌فرض می‌دهد، پس وقتی کلاس دیگر rows() را از نو تعریف نکند، TypeScript راضی است و فهرست خالی رندر می‌شود. تست‌هایی که فقط مدل را بررسی می‌کنند سبز می‌مانند، چون مدل سالم است.برای هر بازنویسی‌ای که صفحه به آن وابسته است تستی بنویسید که آنچه کاربر می‌بیند را می‌خواند: rows()، sub()، title()ِ زیرنماها، یا خودِ DOM. تست‌نویسی هر دو راه را نشان می‌دهد.

داده هرگز بار نمی‌شود، کامپوننت در وضعیتِ بارگذاری گیر کرده

یک متدِ @ $mol_mem یک promise را به‌عنوان مقدارش برگردانده است: fetch( uri ).then( ... )، یک متدِ async، یا نتیجهٔ $mol_wire_async( this ).load(). promiseِ درونِ سلول برای همه یعنی «هنوز در حال محاسبه»، و وقتی حل شود سلول بازمحاسبه می‌کند و promiseِ تازه‌ای می‌سازد. شبکه کار می‌کند؛ نما هرگز نتیجه‌ای نمی‌بیند.شکلِ درست هم‌زمان است: this.$.$mol_fetch.json( uri ) را درونِ سلول صدا بزنید و مقدارِ پارس‌شده را برگردانید. فایبر تا رسیدنِ پاسخ معلق می‌ماند و بعد سلول را دوباره اجرا می‌کند، پس promise هرگز در کدِ شما ظاهر نمی‌شود. جایی که کارِ ناهم‌زمان باید جای دیگری انجام شود، نتیجه‌اش را در یک سلولِ وضعیتِ جداگانه بگذارید و بگذارید افکت یک پرچم یا یک کلید برگرداند، هرگز خودِ promise را.علتِ دوم خطای بلعیده‌شده است: یک try/catch درونِ سلول که تعلیق را هم همراهِ شکست‌های واقعی می‌گیرد. هرچه Promise است را دوباره پرتاب کنید، یا از $mol_fail_catch استفاده کنید که همین بررسی را برایتان انجام می‌دهد.

اشتراک حلقوی

یک متدِ @ $mol_mem در سلولِ دیگری نوشته، یا اثری جانبی داشته که در نهایت چیزی را که خوانده بود بی‌اعتبار کرده است. محاسبه‌ها فقط می‌خوانند و برمی‌گردانند؛ نوشتن و شبکه و تایمر و DOM به هندلرهای @ $mol_action تعلق دارند. سرچشمهٔ دیگرِ همین پیام، اتصالِ <=> به یک فرزند همراه با متدی در کلاس است که به همان فرزند واگذار می‌کند، که در ادامه توضیح داده شده.
ویرایش این صفحه در GitHubآیا این مفید بود؟بلهخیرقبلیاستقراربعدیدریافت داده
در این صفحهبازنویسیِ ویژگی‌ام هیچ کاری نمی‌کند و خطایی هم نیستبه placeholder، غیرفعال‌کردن یا type روی یک ورودی نیاز دارمیک کلمه به‌صورت حرف‌های جدا رندر می‌شودصفحه خالی است، تست‌ها سبزندداده هرگز بار نمی‌شود، کامپوننت در وضعیتِ بارگذاری گیر کردهاشتراک حلقویسرریزِ پشتهٔ فراخوانیمقداری که با حرفِ بزرگ نوشته شده از TypeScript بازنویسی نمی‌شودهمهٔ ردیف‌های یک فهرستِ تودرتو یک آیتم را نشان می‌دهندکلاسِ یک زیرنما را عوض کردم و محتوایش ناپدید شدمتدهای view.tsِ کامپوننتِ پایه روی زیرکلاس نیستندکامپوننتِ پایه‌ای که در همان فایلِ view.tree اعلام شده رفتارش را از دست می‌دهداستایل‌ها میان یک زیرنما و کامپوننتِ درونش نشت می‌کنندسلکتوری روی یک ویژگیِ false هرگز مطابقت نمی‌کندعددی در استایل هیچ اثری ندارددو فرزندِ یک نمای اسکرول روی هم می‌افتندminimal_height هیچ اثرِ دیداری‌ای نداردیک کامپوننتِ جاسازی‌شده صفحه را به پهنا هل می‌دهدCSSِ شخص ثالث کامپوننتم را استایل نمی‌دهدکلیک روی پیوندِ صفحهٔ جاری URL را پاک می‌کندهندلرِ ورودی‌ام در هر رندر اجرا می‌شودخطایی که ستّرِ مقدارم پرتاب می‌کند هرگز دیده نمی‌شوداتصالِ یک هندلرِ کلیددار گزارش می‌شود که وجود نداردباندل ماژولی را دارد که هرگز استفاده‌اش نمی‌کنمبعدی
Type to search the documentation.