Передача переменной v-модели в другую переменную

#vue.js #vuejs2

Вопрос:

У меня есть этот компонент из альголии

 <ais-configure 
  :hitsPerPage="3"
  :filters="filters"
/>
 

Я пытаюсь передать переменную filters, и я могу сделать это так

 filters:'rd_property_region:"London"'
 

и это работает.

Я хотел бы, чтобы часть города была динамичной, поэтому в моем разделе данных я ввел город v-модели и пытаюсь получить к нему доступ

 city:"New York",
filters:'rd_property_region:`${this.city}`' 
 

но город не сдается.

Как я должен передать переменную city в свою переменную фильтра?

Ответ №1:

Похоже, вы действительно хотите использовать вычисляемое свойство

 export default {
  data: () => ({
    city: "New York"
  }),
  computed: {
    filters: ({ city }) => `rd_property_region:"${city}"`
  }
}
 

Вот простая демонстрация…

 new Vue({
  data: () => ({
    city: "New York"
  }),
  computed: {
    filters: ({ city }) => `rd_property_region:"${city}"`
  }
}).$mount("#app") 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script>
<div id="app">
  <select v-model="city">
    <option>London</option>
    <option>Paris</option>
    <option>New York</option>
  </select>
  <pre>filters = {{ filters }}</pre>
</div> 

С вашим исходным кодом было несколько проблем.

Если вы хотели выполнить интерполяцию city в filters строку, формат должен быть одним из следующих:

  • Шаблонный литерал
     `rd_property_region:"${city}"`
     
  • Сцепление
     'rd_property_region:"'   city   '"'
     

Имейте в виду, однако, что это не будет реагировать на изменения, city и если вы попытаетесь сделать это в data возвращаемом значении функции, this.city это undefined произойдет при filters оценке. Вашим единственным реальным вариантом для статической, нереактивной data функции было бы что-то вроде этого

 data: () => {
  const data = { city: "New York" }
  return { ...data, filters: `rd_property_region:"${data.city}"` }
}
 

Комментарии:

1. Я не понимаю этого filters: rd_property_region:»${this.city}»` это тоже вычисляется?

2. @Gandalf Я не понимаю вашего вопроса, но последняя часть моего ответа показывает вам, что именно data входит и что входит computed

3. Вторая часть верна и работает. Однако в литерале шаблона и конкатенации я хотел бы знать, куда это приведет, внутри данных, а не внутри вычислений?

4. @Gandalf это был просто пример того, как вы помещаете одну строку в другую. В данном конкретном случае вы не можете определить data подобные свойства, так как это this.city undefined произойдет при filters вычислении строки

5. Это также сработало » фильтры: функция () {возврат rd_property_region:"${this.city}" }».