Фильтр поиска Vue js - проблемы загрузки данных и привязки - PullRequest
0 голосов
/ 30 июня 2018

У меня есть форма, которая в настоящее время извлекает набор данных из внешнего JSON в виде списка параметров, я пытаюсь включить поисковый фильтр для отображения параметров по мере ввода. Вот вычисленный код, который я создал:

computed: {
            searchedSlots: function() {
              return this.items.filter(function(item) {
                return (
                  (item.shortcode.toLowerCase().match(this.searchTerms.toLowerCase())) ||
                  (item.slots.toLowerCase().match(this.searchTerms.toLowerCase()))
                )
              }.bind(this));
            }
          }

Кроме того, данные поиска v-модели не отображаются в Сводке

Вот форма на JSFiddle

Вот пример того, как форма может выглядеть после того, как она была заполнена enter image description here

<code><!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
    <meta content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0, shrink-to-fit=no' name='viewport'
    />

    <style>
    input, select, button {
        float:left;
        display:block;
        clear:both;
        min-width:200px;
        margin-bottom: 1rem;
      }

      .maxfee, .summary, p.summaryresult {
        float:left;
        display:block;
        clear:both
      }
    </style>

    <!-- Vue.js CDN -->
    <script src="https://unpkg.com/vue"></script>

</head>

<body>


  <form name="myform" id="deliveryservice">

        <!--<pre>{{ items.shortcode }}
-> <! - Загрузить в дневных интервалах из внешнего файла JSON -> <! - Клиент добавляет максимальную сумму, которую он хочет заплатить ->
<! - Затем мы показываем сводку опций, которые они выбрали, прежде чем отправить ->

Резюме:

Я хотел бы {{search.shortcode}} использовать {{servicev}} услугу и платить не более £ {{pricev}}

const app = new Vue ({ el: '#deliveryservice', данные: { Предметы: [], поиск: '', dayslotv: '', servicev: '', цена: '' }, созданный: функция () { выборки ( 'https://s3.eu -west-2.amazonaws.com / dayslots10 / dayslots.json') .then (resp => resp.json ()) .then (items => { this.items = items }) }, });

1 Ответ

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

Я исправил некоторые ошибки. Фильтр будет сделан через несколько минут.

new Vue({
  el: '#deliveryservice',

  data: {
    items: [],
    query: '',
    slot: '',
    service: 'standard',
    price: '0',
    src: 'https://s3.eu-west-2.amazonaws.com/dayslots10/dayslots.json'
  },
  
  methods: {
    setSlot (evt) {
      this.slot = evt.target.value
    }
  },
  
  async created () {
    this.items = await (await fetch(this.src)).json()
    this.slot = this.items[0].slot
  }
})
input, select, button {
  float: left;
  display: block;
  clear: both;
  min-width: 200px;
  margin-bottom: 1rem;
}

.maxfee, .summary, p.summaryresult {
  float: left;
  display: block;
  clear: both
}
<form name="myform" id="deliveryservice">
  <input
    v-model="query"
    type="text"
    placeholder="Enter Day and Delivery Slot"
    required
  >

  <select value="slot" @change="setSlot">
    <option
      v-for="({shortcode, slot}, idx) in items"
      :value="slot"
      :selected="idx === 0"
    >{{ shortcode }} - {{ slot }}</option>
  </select>

  <select v-model="service" required>
    <option value="standard">Standard</option>
    <option value="installation">Installation</option>
  </select>

  <div class="maxfee">
    <input
      v-model.number="price"
      type="number"
      min="0"
      placeholder="Max price you will pay"
      required
    >
  </div>

  <div class="summary">
    <p>Summary:</p>
  </div>
  
  <p class="summaryresult" style="font-weight:bold;">
    I would like
    {{ slot }}
    on
    {{ service }}
    service and pay no more than
    £{{ price }}
  </p>
        
  <button type="submit">Submit</button>
 </form>

<script src="https://unpkg.com/vue"></script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...