मात्रा अद्यतन करते समय मुझे प्रदर्शन अद्यतनों के साथ कोई समस्या है। उपयोगकर्ता को संख्या के मान को बदलने की अनुमति देने के लिए मेरे पास तालिका में किसी संख्या के बगल में बाएं/दाएं तीर हैं, जैसे: spinner

जब उपयोगकर्ता बाएं बटन पर क्लिक करता है, तो एक लाइववायर क्रिया ट्रिगर होती है जो एक संबद्ध-से-अनेक संबंध से संबद्धता को हटा देती है। जब उपयोगकर्ता दाएँ बटन पर क्लिक करता है, तो एक लाइववायर क्रिया ट्रिगर होती है जो अनेक-से-अनेक संबंध से संबंधित है।

लाइववायर एक्शन तब मॉडल को रीफ्रेश करता है, ताकि डायनामिक मॉडल प्रॉपर्टी जो संबंधित रिकॉर्ड की संख्या की गणना करती है, लाइववायर घटक के लिए अपडेट की जाती है।

जब संख्या 0 पर पहुँचती है, तो बायाँ तीर गायब हो जाता है। जब संख्या उपलब्ध कुल मात्रा तक पहुँच जाती है, तो दायाँ तीर गायब हो जाता है।

इस घटक के बारे में सब कुछ बढ़िया काम करता है, सिवाय इसके कि जब भी मान 0 से 1 या 1 से 0 में बदलते हैं, तो प्रदर्शन से अंक गायब हो जाता है:

0 पर टॉगल करें toggle to 0

1 पर टॉगल करें toggle to 1

मेरे घटक में बाकी सब कुछ त्रुटिपूर्ण रूप से काम करता है, जिसमें अन्य कार्यक्षमता भी शामिल है जो गायब होने वाले मूल्य पर निर्भर करती है। मेरे घटक में किसी भी अन्य क्रिया के साथ बातचीत करने से संख्या जादुई रूप से फिर से प्रकट हो जाती है।

अगर मैं अपने ब्लेड में <?php dump($widget->my_associated) ?> जोड़ता हूं, तो हर बार सही मान डंप हो जाता है। टॉगल करने से लेकर 1 या 4 तक का उदाहरण देखें:

toggle with dump

यह मेरे घटक के लिए कोड है:

दुकान-विजेट्स.ब्लेड.php

<td align="center">
        <span style="white-space:nowrap;">
        @if ($widget->my_associated)
            <a href="#" wire:click="release(false)"><i class="fas fa-fw fa-caret-left"></i></a>
        @else
            <i class="fas fa-fw"></i>
        @endif
        {{ $widget->my_associated }}<?php dump($widget->my_associated) ?>
        @if ($widget->remaining)
            <a href="#" wire:click="reserve(false)"><i class="fas fa-fw fa-caret-right"></i></a>
        @else
            <i class="fas fa-fw"></i>
        @endif
        </span>
    </td>

ShopWidgets.php

<?php

namespace App\Http\Livewire;

use Livewire\Component;
use App\Widget;

class ShopWidgets extends Component
{
    public $widget;

    public function mount(Widget $widget)
    {
        $this->widget = $widget;
    }

    public function render()
    {
        return view('livewire.shop-widgets', [
            'widget' => $this->widget,
        ]);
    }

    public function reserve($bought) {
        $this->widget->reserve($bought);
        $this->widget->refresh();
    }

    public function release($bought) {
        $this->widget->release($bought);
        $this->widget->refresh();
    }
}

विजेट.php

    public function reserve($bought)
    {
        Gate::authorize('reserve', $this);
        if ($this->remaining > 0) {
            $this->buyers()->attach(Auth::user()->id, ['bought' => $bought]);
        }
    }

    public function release($bought)
    {
        Gate::authorize('release', $this);
        $pivot = $this->buyers()->newPivotStatementForId(Auth::user()->id)->where('bought', $bought);
        if ($pivot->count() > 0)
        {
            $pivot->limit(1)->delete();
        }
    }

किसी भी विचार इस विशिष्ट परिस्थिति के लिए प्रदर्शन समस्या का कारण क्या हो सकता है?

0
QuotidianVoid 25 नवम्बर 2020, 06:28

1 उत्तर

सबसे बढ़िया उत्तर

इसलिए, इसके साथ थोड़ा और खेलने के बाद, मैंने महसूस किया कि डंप शायद सही ढंग से प्रदर्शित हो रहा है क्योंकि यह <div> के अंदर था। इसलिए, मैंने नंबर डिस्प्ले को <span> के अंदर रखा और ऐसा लगता है कि मेरी समस्या ठीक हो गई है... <span>{{ $widget->my_associated }}</span>

अगर किसी को पता है कि ऐसा क्यों हो रहा है, तो मुझे भविष्य की समस्याओं के निवारण के बारे में जानने की उत्सुकता होगी...

0
user3268305 25 नवम्बर 2020, 16:51