首页 > 解决方案 > Laravel 为每个与 jquery

问题描述

我正在使用 Laravel 5.6,在我的控制器中,我从一个 api 中提取一些数据,这些数据存储在一个变量中并将其传递给视图。$orders 是变量。

在我看来,我有这段代码。

@foreach($orders as $order)
                                  <tbody>
                                      <tr>
                                          <td>{{ \Carbon\Carbon::parse($order->created_at)->format('m/d/Y') }}</td>
                                          <td>{{ $order->order_number }}</td>
                                          <td><input type="checkbox" data-toggle="switch" class="ct-primary" id="printing" value="0" /></td>
                                          <td><input type="checkbox" data-toggle="switch" class="ct-primary" id="engraving1" value="0" /></td>
                                          <td><input type="checkbox" data-toggle="switch" class="ct-primary" id="engraving2"  value="0" /></td>
                                          <td><input type="checkbox" data-toggle="switch" class="ct-primary" id="assembly"  value="0" /></td>
                                          <td><input type="checkbox" data-toggle="switch" class="ct-primary" id="completed"  value="0" /></td>
                                          <td><button class="btn btn-info btn-fill btn-sm"><a href="orders/{{ $order->id }}" style="color: #FFFFFF">Details</a></button></td>
                                      </tr>
                                      <tr>
                                  </tbody>
                                  @endforeach

上面是一个 foreach 循环,它遍历每个订单并将其发布在我的视图中……有 200 个结果……很简单。但是在它下面使用 Jquery 我需要将详细信息存储到数据库中并运行更多操作。为了测试它如何与 Jquery 交互,我完成了以下代码。

          $(document).on('change', '#printing', function() {
              console.log({{ $order->order_number }});
          });

我遇到的问题是 $order->order_number 只是 foreach 循环开始时加载的第一个数字。所以在这个例子中这个console.log是37311。我的问题是我怎么能做这个jquery调用:

 $(document).on('change', '#printing', function() {
              console.log({{ $order->order_number }});
          });

我也试过这个使每个 id 都是唯一的:

id="printing{{ $order->order_number }}".

然后在jquery('#printing{{ $order->order_number }}')中但是并没有解决它。等于 for each 中的每个订单号?

标签: jquerylaravel-5

解决方案


我希望能正确理解这个问题。这是我会做的:

  1. 使用您的迭代器将 $order->order_number 存储到该复选框输入的数据属性中
  2. 使用类打印复选框
  3. 使用 jQuery 绑定这些动作

以下是适合这些编辑的代码修改

//edited jquery event binding to class and logging data-ordernumber
$(document).on('change', '.printing', function() {
  console.log($(this).data("ordernumber"));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
@foreach($orders as $order)
<tbody>
  <tr>
    <td>{{ \Carbon\Carbon::parse($order->created_at)->format('m/d/Y') }}</td>
    <td>{{ $order->order_number }}</td>
    <td><input type="checkbox" data-toggle="switch" data-ordernumber="{{ $order->order_number }}" class="ct-primary printing" id="printing" value="0" /></td>
    <td><input type="checkbox" data-toggle="switch" class="ct-primary" id="engraving1" value="0" /></td>
    <td><input type="checkbox" data-toggle="switch" class="ct-primary" id="engraving2" value="0" /></td>
    <td><input type="checkbox" data-toggle="switch" class="ct-primary" id="assembly" value="0" /></td>
    <td><input type="checkbox" data-toggle="switch" class="ct-primary" id="completed" value="0" /></td>
    <td><button class="btn btn-info btn-fill btn-sm"><a href="orders/{{ $order->id }}" style="color: #FFFFFF">Details</a></button></td>
  </tr>
  <tr>
</tbody>
@endforeach

显然 php 变量没有被处理,但我认为一个活生生的例子无论如何都是有用的。


推荐阅读