#javascript #laravel
Вопрос:
Мне нужен график внутри карточки с записями из базы данных.
Каждая карта содержит button
элемент, который при нажатии обновляет значение для конкретного идентификатора карты. Значение будет активировано в результате события.
Контроллер:
class SampleController extends Controller
{
public function index()
{
$users=User::all();
return view('progress', ['users'=> $users]);
}
@foreach($users as $user)
<div class="card">
<div class="card-title">
<div class="caption">
{{ $user['name'] }}
</div>
<div class="actions">
<div class="btn">
<button id="ref">Refresh</button>
</div>
</div>
</div>
<div class="card-body" id="{{ $user['id'] }}">
<center>
<div style=" display:inline; width: 200px; height: 200px;">
<input
class="graph"
data-max="{{ $user['goal'] }}"
value= ""
/>
</div>
</center>
</div>
</div>
@endforeach
</div>
Сценарий::
var pusher = new Pusher('xxxxxxx', {
cluster: 'ap3',
encrypted: true
});
// Subscribe to the channel we specified in our Laravel Event
var channel = pusher.subscribe('my-channel');
channel.bind('App\Events\myEvent', function(data){
target = data.id;
value = data.value;
//Refresh button
$('#ref').click(function(){
$.ajax({url: '/api/getId/' target,
success: function(){
alert('THe UI is updated' value);
$(target).block({
message: 'processing',
timeout: 20000,
});
$(target).unblock();
}
});
});
Когда я передаю значение через tinker, как показано ниже,
event(new AppEventsmyEvent('3',40));
Я мог видеть, что конкретная Id(3)
информация обновляется с учетом значения 40
.
Цель обновления состоит в том ,что карта должна быть заблокирована на 20 секунд, между тем, если я передам значение через событие для конкретного идентификатора, оно разблокирует карту и обновит карту новым значением.
Проблема в том ,что если у меня 10 карт, работает только кнопка обновления на первой карте, кнопка обновления на остальных картах не работает.
Как я могу заставить кнопку обновления работать на всех картах?
Кто-нибудь может, пожалуйста, помочь? Большое спасибо.
Комментарии:
1. идентификатор должен быть уникальным для каждого элемента .попробуйте добавить имя класса и изменить $(документ).on («щелчок»,». имя класса», функция(){
2. @Джон Лобо, Это работает! Но если я изменю значение для карты с идентификатором:1, оно обновит значение для идентификатора:1 после нажатия кнопки обновить.
But, If i Press the refresh button for the ID:2, It takes the same Value which I have given to the ID: 1
. Этого не должно быть, если я естьNAN
в значении, то после нажатия кнопки обновитьNAN
должно быть значение после нажатия кнопки Обновить. Как я мог это сделать? Не могли бы вы, пожалуйста, помочь?3. потому что вы получаете доступ к значению из цели onclick = data.id; значение = данные.значение; . поэтому лучше установить идентификатор на кнопку, подобную этой <идентификатор кнопки=»ref» идентификатор данных-» {{$user[‘id’] }}»>Обновить<идентификатор кнопки=»ref» идентификатор данных -» {{$user[‘id’] }}»></кнопка>, чтобы вы могли войти внутрь onclick $(это).attr(«идентификатор данных»)
4. @Джон Лобо, Извини, что я тебя не понял. Если я установлю <идентификатор кнопки=»ref» идентификатор данных-» {{$user[‘id’] }}»>Обновить<идентификатор кнопки=»ref» идентификатор данных -» {{$user[‘id’] }}»></кнопка>, то как передать идентификатор данных в приведенном ниже сценарии? , $(документ).on («нажмите»,». ref», функция(){ $.ajax({url:’/api/getId/’ цель, успех: функция(){ предупреждение («Пользовательский интерфейс заблокирован» цель); var tar = document.getElementById(цель); $(tar).блок({ сообщение: «обработка», время ожидания: 20000 }); } });
5. <идентификатор кнопки=»ref» класс=»ref» идентификатор данных-» {{$user[‘id’] }}»>Обновить<идентификатор кнопки=»ref» класс=»ref» идентификатор данных -» {{$user[‘id’] }}»></кнопка> $(‘.ref’).нажмите(функция(){ var цель=$(это).attr(‘идентификатор данных’) $.ajax({url: ‘/api/getId/’ цель, успех: функция(){ предупреждение(‘THe Пользовательский интерфейс обновлен’ значение); $(цель). заблокировать({ сообщение: «обработка», время ожидания: 20000, }); $(цель).разблокировать(); } }); });