Vue.js - Buefy Modules (Radio btns / Check Box) - PullRequest
0 голосов
/ 07 мая 2018

Я практикую бэкэнд в Laravel, а для фронтэнда я использую Vue.js - модули Buefy, и у меня небольшие проблемы с Radio и CheckBox.

Здесь пользователь должен выбрать один из двух предлагаемых радиомодулей:

<div class="block">
      <b-radio-group v-model="permissionType">
          <b-radio name="permission_type" value="basic">Basic Permission</b-radio>
          <b-radio name="permission_type" value="crud">CRUD Permission</b-radio>
      </b-radio-group>
  </div>

Если пользователь нажимает первый btun (Basic), должно появиться 3 поля ввода:

<div class="field" v-if="permissionType == 'basic'">
   <label for="display_name" class="label">Name (Display Name)</label>
   <p class="control">
     <input type="text" class="input" name="display_name" id="display_name">
   </p>
</div>

      <div class="field" v-if="permissionType == 'basic'">
        <label for="name" class="label">Slug</label>
        <p class="control">
          <input type="text" class="input" name="name" id="name">
        </p>
      </div>

      <div class="field" v-if="permissionType == 'basic'">
        <label for="description" class="label">Description</label>
        <p class="control">
          <input type="text" class="input" name="description" id="description" placeholder="Describe what this permission does">
        </p>
      </div>

Если пользователь нажимает второй btn (CRUD), должен появиться 1 ввод, 4 флажка btns и таблица, но они не появляются.

<div class="field" v-if="permissionType == 'crud'">
        <label for="resource" class="label">Resource</label>
        <p class="control">
          <input type="text" class="input" name="resource" id="resource" v-model="resource" placeholder="The name of the resource">
        </p>
      </div>

      <div class="columns" v-if="permissionType == 'crud'">
        <div class="column is-one-quarter">
          <b-checkbox-group v-model="crudSelected">
            <div class="field">
              <b-checkbox custom-value="create">Create</b-checkbox>
            </div>
            <div class="field">
              <b-checkbox custom-value="read">Read</b-checkbox>
            </div>
            <div class="field">
              <b-checkbox custom-value="update">Update</b-checkbox>
            </div>
            <div class="field">
              <b-checkbox custom-value="delete">Delete</b-checkbox>
            </div>
          </b-checkbox-group>
        </div> <!-- end of .column -->

        <input type="hidden" name="crud_selected" :value="crudSelected">

        <div class="column">
          <table class="table" v-if="resource.length >= 3">
            <thead>
              <th>Name</th>
              <th>Slug</th>
              <th>Description</th>
            </thead>
            <tbody>
              <tr v-for="item in crudSelected">
                <td v-text="crudName(item)"></td>
                <td v-text="crudSlug(item)"></td>
                <td v-text="crudDescription(item)"></td>
              </tr>
            </tbody>
          </table>
        </div>
      </div>

Я проверил документацию Buefy и было несколько обновлений, но когда я меняю код, все равно не работает ..

Вот скрипт:

  <script>
        var app = new Vue({
          el: '#app',
          data: {
            permissionType: 'basic',
            resource: '',
            crudSelected: ['create', 'read', 'update', 'delete']
          },
          methods: {
            crudName: function(item) {
              return item.substr(0,1).toUpperCase() + item.substr(1) + " " + app.resource.substr(0,1).toUpperCase() + app.resource.substr(1);
            },
            crudSlug: function(item) {
              return item.toLowerCase() + "-" + app.resource.toLowerCase();
            },
            crudDescription: function(item) {
              return "Allow a User to " + item.toUpperCase() + " a " + app.resource.substr(0,1).toUpperCase() + app.resource.substr(1);
            }
          }
        }); 
    </script>

Здесь я помещаю оригинальный код без изменений, если кто-то сможет это исправить, буду благодарен. Спасибо!

1 Ответ

0 голосов
/ 16 июня 2018

вы забыли добавить v-модель в вашу радиогруппу, попробуйте это, и она должна работать

<div class="block">
  <b-radio-group v-model="permissionType">
      <b-radio v-model="permissionType" name="permission_type" native-value="basic">Basic Permission</b-radio>
      <b-radio v-model="permissionType" name="permission_type" native-value="crud">CRUD Permission</b-radio>
  </b-radio-group>

...