VueJS表单输入绑定

时间:2017-10-20 06:11:31

标签: javascript php laravel vue.js

嘿所以我是Vue的初学者,当我使用foreach循环时我才遇到这个问题 问题:每当我选择任何复选框时,都会被选中。

create.blade.php

  @foreach ($permissions as $permission)
              <li class="list-group-item bold">
                  <input type="checkbox" id="{{$permission->id}}"
                  :custom-value="{{$permission->id}}" v-model="permissionsSelected">
                  <label for="{{$permission->id}}">{{$permission->display_name}}
                  <em>{{$permission->description}}</em></label>
              </li>
            @endforeach
          </ul>
    <input type="hidden" name="permissions" :value="permissionsSelected">



<script>
 var app = new Vue({
   el: '#app',
   data: {
     permissionsSelected: ''
   }
 });
</script>

1 个答案:

答案 0 :(得分:1)

您的问题似乎是<input>遗失:value=".."。 permissionsSelected也应该是一个数组:permissionsSelected: []

我建议你不要将laravel blade @foreach与vue混合使用。

而是将$permissions传递给javascript并使用vue呈现列表。您可以在this answer

中了解如何执行此操作

另外一件事,来自laravel文档

  

由于许多JavaScript框架也使用&#34;卷曲&#34;大括号表示一个   给定的表达式应该在浏览器中显示,你可以使用@   符号通知Blade渲染引擎表达式应该   保持不变

这是您更新的示例

<div id="app">
  <ul>
    <li class="list-group-item bold" v-for="permission in permissions">
      <input
        type="checkbox"
        :id="permission.id"
        :value="permission.id"
        v-model="permissionsSelected"
      >
      <label :for="permission.id">@{{ permission.display_name }}
        <em>@{{ permission.description }}</em>
      </label>
    </li>
  </ul>
  <input type="hidden" name="permissions" :value="permissionsSelected">
</div>

<script>
  var permissions = JSON.parse("{{ json_encode($permissions) }}");

  var app = new Vue({
    el: '#app',
    data: {
      permissions: permissions,
      permissionsSelected: [],
    }
  });
</script>