मात्रा अद्यतन करते समय मुझे प्रदर्शन अद्यतनों के साथ कोई समस्या है। उपयोगकर्ता को संख्या के मान को बदलने की अनुमति देने के लिए मेरे पास तालिका में किसी संख्या के बगल में बाएं/दाएं तीर हैं, जैसे:
जब उपयोगकर्ता बाएं बटन पर क्लिक करता है, तो एक लाइववायर क्रिया ट्रिगर होती है जो एक संबद्ध-से-अनेक संबंध से संबद्धता को हटा देती है। जब उपयोगकर्ता दाएँ बटन पर क्लिक करता है, तो एक लाइववायर क्रिया ट्रिगर होती है जो अनेक-से-अनेक संबंध से संबंधित है।
लाइववायर एक्शन तब मॉडल को रीफ्रेश करता है, ताकि डायनामिक मॉडल प्रॉपर्टी जो संबंधित रिकॉर्ड की संख्या की गणना करती है, लाइववायर घटक के लिए अपडेट की जाती है।
जब संख्या 0 पर पहुँचती है, तो बायाँ तीर गायब हो जाता है। जब संख्या उपलब्ध कुल मात्रा तक पहुँच जाती है, तो दायाँ तीर गायब हो जाता है।
इस घटक के बारे में सब कुछ बढ़िया काम करता है, सिवाय इसके कि जब भी मान 0 से 1 या 1 से 0 में बदलते हैं, तो प्रदर्शन से अंक गायब हो जाता है:
मेरे घटक में बाकी सब कुछ त्रुटिपूर्ण रूप से काम करता है, जिसमें अन्य कार्यक्षमता भी शामिल है जो गायब होने वाले मूल्य पर निर्भर करती है। मेरे घटक में किसी भी अन्य क्रिया के साथ बातचीत करने से संख्या जादुई रूप से फिर से प्रकट हो जाती है।
अगर मैं अपने ब्लेड में <?php dump($widget->my_associated) ?>
जोड़ता हूं, तो हर बार सही मान डंप हो जाता है। टॉगल करने से लेकर 1 या 4 तक का उदाहरण देखें:
यह मेरे घटक के लिए कोड है:
दुकान-विजेट्स.ब्लेड.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();
}
}
किसी भी विचार इस विशिष्ट परिस्थिति के लिए प्रदर्शन समस्या का कारण क्या हो सकता है?
1 उत्तर
इसलिए, इसके साथ थोड़ा और खेलने के बाद, मैंने महसूस किया कि डंप शायद सही ढंग से प्रदर्शित हो रहा है क्योंकि यह <div>
के अंदर था। इसलिए, मैंने नंबर डिस्प्ले को <span>
के अंदर रखा और ऐसा लगता है कि मेरी समस्या ठीक हो गई है... <span>{{ $widget->my_associated }}</span>
अगर किसी को पता है कि ऐसा क्यों हो रहा है, तो मुझे भविष्य की समस्याओं के निवारण के बारे में जानने की उत्सुकता होगी...
संबंधित सवाल
नए सवाल
laravel
लारवेल एक स्वतंत्र, ओपन-सोर्स PHP वेब फ्रेमवर्क है, जो टेलर ओटवेल द्वारा निर्मित और मॉडल-व्यू-कंट्रोलर (एमवीसी) आर्किटेक्चरल पैटर्न और सिम्फनी पर आधारित वेब अनुप्रयोगों के विकास के लिए अभिप्रेत है। लारवेल का स्रोत कोड GitHub पर होस्ट किया गया है और MIT लाइसेंस की शर्तों के तहत लाइसेंस प्राप्त किया गया है।