zeynab
3 سال پیش توسط zeynab مطرح شد
5 پاسخ

ایجاد لودینگ های متفاوت در یک کامپوننت livewire

سلام و خسته نباشید به دوستان

اگر در یک کامپوننت چند رویداد مختلف کلیک داشته باشم

wire:click="send_()"

و بخواهم برای هر یک از رویداد یک لودینگ متفاوت تعریف کنیم باید چیکار کنم ؟

مثلا برای ارسال اطلاعات این کد نوشتم :

<div wire:loading  >
 منتظر بمانید
</span>
</div>

<div wire:loading.remove  wire:click="send_()">
    ارسال
</div>

حالا میخواستم برای قسمت paginate هم یک لودینگ داشته باشم . مثل روش بالا کل کد ها در یک div گذاشتم ولی به درستی کار نمیکنه
کسی نمیدونه باید با چه روشی بنویسم ؟


ثبت پرسش جدید
zeynab
تخصص : برنامه نویس تحت وب
@sahelz74 3 سال پیش مطرح شد
0

اگر بخوام سوالم واضح تر بگم

<div wire:loading >
دریافت اطلاعات
</div>

<div wire:loading.remove>

{{--    اطلاعات 1--}}
{{--    اطلاعات 2--}}
{{--    اطلاعات 3--}}

    <div wire:loading  >
        منتظر بمانید
        </span>
    </div>

    <div wire:loading.remove  wire:click="send_()">
        ارسال
    </div>
{{--    اطلاعات 4--}}
{{--    اطلاعات 5--}}

</div>

این شکل کلی کدهایی که نوشتم .
لودینگ اول مربوط به نمایش کل اطلاعات زمان paginate هست .

زمانی که روی ارسال کلیک میکنم . لودینگ مربوط به خودش اجرا نمیشه و اولی اجرا میشه .
میخواستم لودینگ مجزا داشته باشم
ممنون میشم راهنمایییم کنید .


سعید
تخصص : برنامه نویس وب
@Saeeed 3 سال پیش آپدیت شد
0

@sahelz74 سلام راحلش خیلی ساده است : باید از wire.target استفاده کنی

<div>
    <button wire:click="checkout">Checkout</button>
    <button wire:click="cancel">Cancel</button>

    <div wire:loading wire:target="checkout">
        Processing Payment...
    </div>
</div>

https://laravel-livewire.com/docs/2.x/loading-states


zeynab
تخصص : برنامه نویس تحت وب
@sahelz74 3 سال پیش مطرح شد
0

@Saeeed
سلام خیلی ممنونم .

من برای کلیک target مشخص کردم . حالا برای paginate نمیدونم target باید چی تعیین کنم ؟
با وجود target هنوز هم برای تمام لودینگ ها این قسمت :

<div wire:loading >
دریافت اطلاعات
</div>

اجرا میکنه !
راه حلی برای لودینگ های تو در تو وجود نداره ؟


سعید
تخصص : برنامه نویس وب
@Saeeed 3 سال پیش مطرح شد
0

@sahelz74
لودینگ تو در تو معنا نداره ، شما هر جایی ، هر لودینگی که بذاری و تارگتش رو مشخص کنی ، وقتی اجرا میشه که دقیقا همون تارگت اجرا بشه . و فرقی نداره کجا باشه.

برای pagination هم ، بنظرم میاد باید کامپوننت pagination رو شخصی سازی کنی . میتونی کامپوننت دیفالت رو برداری و داخلش برای هر المان که خواستی wire:loading و wire:target بذاری . ولی با این روش ، دیگه همه pagination ها یه لودینگ میگیرن و زیاد منعطف نیست.
با مستندات زیر براحتی میتونی pagination کاستوم بسازی .

https://laravel-livewire.com/docs/2.x/pagination


zeynab
تخصص : برنامه نویس تحت وب
@sahelz74 3 سال پیش مطرح شد

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام