繁体   English   中英

Vue 加载组件来自 Laravel 视图

[英]Vue load component from Laravel view

我是 Vue 和 Laravel 的新手,我正在测试这些框架。

我想加载一个带有数组的 Vue 组件。 这个想法是通过Vue组件的Prop参数过去到Laravel视图。 我不确定这是直接从 Vue 组件使用 axios 获取值的正确方法还是更好的选择。

目前我正在尝试从数组 Prop 参数加载到组件中。

Vue组件的代码是:

<template>
  <div>
      <b-form-select
        v-model="selected"
        :options="ar"
        class="mb-3"
        value-field="customer_name">
      </b-form-select>     
 </div>
</template>

<script>
  export default {
        props: ['customers'],

        data: function() {
          return {
            ar: JSON.parse(this.customers)
          }
        }
    }
</script>

更新

create.blade.php

@extends('layouts.app')
@section ('botones')
@endsection
@section('content')
    <h2 class="text-center mb-5"> Add Task</h2>
    <div class="row justify-content-center mt-5">      
        <div class="col-md-3">
            <form method="POST" action="{{ route('taskjobs.store') }}" novalidate> 
                @csrf
                <div class="form-group">
                  
                <form-task :customers="json_encode($customers)"></form-task> // interpolation is not necessary
               
                <div class="form-group">
                    <input type="submit" class="btn btn-primary btn-dark" value="Add Task">
    
                </div>
            </form>
        </div>     
    </div>
    
@endsection

TaskJobController.php

   /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
        $customers = Customer::all(['id', 'customer_name']);
        $jobs= Job::all(['id', 'job_name']);
        $concepts= Concept::all(['id', 'concept_name']);
        return view('taskjobs.create')
        ->with('customers', $customers)
        ->with('jobs', $jobs)
        ->with('concepts', $concepts);
    }

现在表单元素显示 null 值,但在 ul 中,元素显示为 json object。 这对我来说很困惑。

也许有人可以帮助我...谢谢。

我不确定 laravel 视图,但通常如果将道具传递给 vue 组件,则需要使用绑定运算符':'(即)

尝试做

<form-task :customers="@json($customers)"></form-task>

或者

<form-task :customers="{!! json_encode($customers) !!}"></form-task>

尝试将 ar 定义为计算属性,如下所示


The code of the Vue component is:

<template>
  <div>
      <b-form-select
        v-model="selected"
        :options="ar"
        class="mb-3"
        value-field="customer_name">
      </b-form-select>     
 </div>
</template>

<script>
  export default {
        props: ['customers'],
        computed: {
          ar: {
            return JSON.parse(this.customers);
         }
      }
    }
</script>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM