AngularJS和Laravel Foreach

时间:2017-06-04 17:39:17

标签: angularjs laravel laravel-5 angularjs-directive foreach

我在使用Angular和Laravel的foreach循环时遇到问题,我试图尽可能详细:)

// Use it like: \App\Company::search($request->all())->paginate(20);
public function scopeSearch($q, $filters)
{
    $sortBy = isset($filters['sortby']) ? $filters['sortby'] : 'created_at';
    $orderBy = isset($filters['orderby']) ? $filters['orderby'] : 'desc';

    return $q->where(function ($q) use ($filters) {
            $q->whereHas('addresses', function ($q) use ($filters) {
                $q->where('address_line_1', "LIKE", '%'.$filters['name'].'%')
                    ->orWhere('address_line_2', "LIKE", '%'.$filters['name'].'%')
                    ->orWhere('city', "LIKE", '%'.$filters['name'].'%')
                    ->orWhere('county', "LIKE", '%'.$filters['name'].'%')
                    ->orWhere('post_code', "LIKE", '%'.$filters['name'].'%');
            })
            ->orWhereHas('digits', function ($q) use ($filters) {
                $q->where('number', "LIKE", '%'.$filters['name'].'%')
                    ->orWhere('extension', "LIKE", '%'.$filters['name'].'%');
            });
        })
        ->with(['addresses', 'digits'])
        ->orderBy('companies.'.$sortby, $orderby)
        ->select(['id', 'registered_name', 'trading_name', 'created_at', 'type']);
}

这是我的foreach循环

  

@foreach($ products as $ product)
        
                {{$ product-> product_description}}
                                      product_price}}" NG-模型="价格">                 
                                                          
                                          @ {{价格*数量}}                                                                                  
            @endforeach

问题:

- 当我使用" ng-model"价格/数量不会显示,但是当我使用" ng-bind"显示价格/数量,但小计列显示NaN(我不知道为什么)。

流速:

- 该表的每一行显示杂货项目列表,当单击该复选框时,表示该项目已被选中并转移到另一个表格以计算该总计。

参考: https://ibb.co/hCddLv(从食品清单中扣除) https://ibb.co/e0jk0v(当转移该产品时,会发生这种情况) *我正在使用" ng-bind"显示价格和数量...

先谢谢你的回答......

我已经用laravel中的控制器代码更新了这个

  

public function create()       {
          $ rooms = Room :: where(' status',' =',0) - > orderBy(' room_length_of_stay') - > get();

<div style="padding:15px;" id="table-scroll" ng-app>
    <table class="table table-responsive tblProducts" id="tblProducts">
      <thead>
        <tr>
          <th>Description</th>
          <th>Prices</th>
          <th></th>
          <th></th>
          <th>Action</th>
        </tr>
      </thead>                                  
      <tbody>
        //foreach loop here
      </tbody>
    </table>
</div>

2 个答案:

答案 0 :(得分:1)

ng-model通过使用作用域上的属性来读取/写入值作为输入更改,因此您不能只为它分配一些值因此问题。理想情况下,我只使用Angular进行前端和模板处理,并使用ng-repeat在JS中从后端检索到的数组进行循环(可能是基于laravel的,但会保留它只是提供JSON数据而不执行任何操作视图,流明对此有好处)。在短期内,您可以在输入上设置value属性,这将是将数据放入可能不适用于ng-model的表单的最直接方式(假设您指向某个JS属性),因为它是预期的ng-model将用于读/写值。

答案 1 :(得分:0)

不使用刀片中的foreach而是使用ng-repeat指令。在json中获取foreach中的数据并在模板中迭代它。

在渲染角度控制器之前制作一个脚本:

<script>
  var products = "{{ json_encode($products) }}";
</script>

然后在控制器中将其存储为:

$scope.products = products;

然后迭代它:

<p ng-repeat="product in products">
  @{{ product.product_description }}
  @{{ product.price*product.qty}} 
</p>