laravel 刀片模板中的 Vue.js v-for 循环

Posted

技术标签:

【中文标题】laravel 刀片模板中的 Vue.js v-for 循环【英文标题】:Vue.js v-for loop in laravel blade template 【发布时间】:2019-03-02 10:50:08 【问题描述】:

使用v-for 时我无法绑定索引和值...但是当我回显数组时它可以工作...

刀片文件内容:

<tr class="single-member" v-for='(member, index) in members' :index='index' >
        @ index 
        <div class="field">
            <div class="control">
                <input class="input" type="text" placeholder="First name*" >
            </div>
        </div>
        <div class="field">
            <div class="control">
                <input class="input" type="text" placeholder="Last name*" >
            </div>
        </div>
        <div class="field">
            <div class="control">
                <input class="input" type="email" placeholder="Email*" >
            </div>
        </div>
        <div class="field">
            <div class="control">
                <input class="input" type="number" placeholder="Phone">
            </div>
        </div>
    </tr>

所以这个index 无法解析,我的成员对象是空的,字段为"name, surname, email, phone"

请注意,如果我使用 @ members 它将起作用,但是当我想使用 @ member @ index 时它将不起作用,任何想法为什么会发生这种情况?

我遇到的错误是:

app.js:6103 [Vue 警告]:属性或方法“索引”未在 实例,但在渲染期间引用。确保该属性是 反应式,无论是在数据选项中,还是对于基于类的组件,通过 初始化属性。看: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.

(在根目录中找到)

数据对象 app.js 文件

data: function() 
    return 
        gdprChecked: false,
        level: 'beginner',
        teamName: '',
        members: [],
        formError: false,
        formErrorMessage: '',
        formSuccess: false,
        formSuccessMessage: '',
    
,
mounted() 
    // must be minimum 1 user
    this.members.push(firstName: '', lastName: '', email: '', phone: '');
,

工作代码,只有刀片文件更改为此

<div class="columns" v-for="(member, index) in members">
    <div class="column is-narrow">
        @ index + 1 
    </div>
    <div class="column">
        <div class="field">
            <div class="control">
                <input class="input" type="text" placeholder="trans('hackathon.firstName')" v-model="member.firstName">
            </div>
        </div>
        <div class="field">
            <div class="control">
                <input class="input" type="text" placeholder="trans('hackathon.email')"  v-model="member.email">
            </div>
        </div>
    </div>
    <div class="column">
        <div class="field">
            <div class="control">
                <input class="input" type="text" placeholder="trans('hackathon.lastName')"  v-model="member.lastName">
            </div>
        </div>
        <div class="field">
            <div class="control">
                <input class="input" type="text" placeholder="trans('hackathon.phone')"  v-model="member.phone">
            </div>
        </div>
    </div>
</div>

仍然不确定为什么 #1 不起作用而 #2 确实...有什么想法吗?

【问题讨论】:

请提供您的数据对象? @boussadjrabrahim 添加了 【参考方案1】:

试试 &lt;tr class="single-member" v-for='member in members' :key='member.id' &gt;

这将引用 member.id 记住成员必须是成员数组

vue-list key

【讨论】:

我没有 ID,而且我的错误应该是索引而不是键...现在将编辑它【参考方案2】:

你可以关注这个。它对我有用

<tr v-for="(item,item_index) in purchase_items" :key="item_index">
   td>@ item_index+1 </td>
      <td>@ itemProduct(item.product_id) </td>
      td>@ itemUnit(item.unit_id) </td>
      <td>@ item.price  * @ item.qty </td>
      <td>@ item.amount   </td>
       <td>
    <button v-on:click="removeItem(`@ item_index `)" class="btn 
      btn-danger btn-sm" > <i class="fa fa-trash-alt fa-1x"></i> </button>
  </td>
</tr>

【讨论】:

以上是关于laravel 刀片模板中的 Vue.js v-for 循环的主要内容,如果未能解决你的问题,请参考以下文章

在 laravel 刀片视图中显示 vue js 模板

来自 Vue.js 的组件未加载到 Laravel 刀片中

将 Vue.js 包含到 Laravel 中

Vue 组件渲染而不是 Laravel Blade 模板

如何将 vue 数据显示到 Laravel 刀片?

为啥 vue js 组件没有显示在 laravel 刀片中?