1

Я ищу, чтобы нажать массив из с в вычисляемом свойстве в Vue.js 2, Vue используется в Laravel, и я получаю следующее ответ.Нажмите на массив из с в вычисляемом свойстве в Vue.js 2

createSelection: "(ошибка при оценке)"

Следующий код используется:

<template> 
    <div> 
    <div>Credits carried through: {{ credits }}</div> 
    <div v-for="meal in meals"> 
     {{meal}} 
     <input :id="meal" :name="meal" v-model.number="creditsPerMeal[meal]" type="number"> 
    </div> 
    <div> 
     Credits used: {{creditsSum}}/{{credits}} 
    </div> 
    </div> 
</template> 

<script> 
    export default { 

    mounted() { 
     console.log('Component ready.'); 

     console.log(JSON.parse(this.f)); 

    }, 

    props: ['f','c'], 

    name: 'credits', 
    data: function() { 
    var meals = JSON.parse(this.f) 

    var creditsPerMeal = {} 
    for (var i = 0; i < meals.length; i++) { 
     creditsPerMeal[meals[i]] = 0 
    } 

    var createSelection = [] 


     return { 
     credits: this.c, 
     meals, 
     creditsPerMeal 
     } 
    }, 

    computed: { 
     creditsSum() { 
     return Object.values(this.creditsPerMeal).reduce((a, b) => a + b, 0) 
     }, 

     createSelection: function(){ 
     for (var i = 0; i < meals.length; i++) { 
      createSelection.push({ 
       food: meals[i], 
       quantity: creditsPerMeal[meals[i]] 
      }) 
      } 
     } 
    } 
    } 
</script> 

ответ

2

Компьютерный метод должен возвращать что-то и на самом деле они не должны ничего делать, просто вычислить что-то и вернуться. У вашего вычисленного метода нет возврата вообще. Прежде всего переместить нажимной логику метода:

computed: { 
     creditsSum() { 
     return Object.values(this.creditsPerMeal).reduce((a, b) => a + b, 0) 
     }, 
    }, 
    methods: { 
     createSelection(){ 
      for (var i = 0; i < meals.length; i++) { 
       createSelection.push({ 
       food: meals[i], 
       quantity: creditsPerMeal[meals[i]] 
       }) 
      } 
     } 
    } 

Также error during evaluation не описание проблемы и не выглядит как проблема Vue, может быть, вы можете предоставить более подробную ошибку?

+0

Спасибо за ваш ответ, да, это ошибка Vue, поскольку она отображается только в инструментах Vue dev, а не в консоли. Я передам ваш код. –

+0

Итак, добавлено, что теперь нужно было бы назвать метод наилучшим способом? Может быть, смотреть? –

+0

Где вам нужно позвонить по этому методу? Я не вижу вызова идентификатора 'createSelection' в вопросительном коде. Btw также выглядит очень странно, что функция 'data' выполняет некоторые действия, я рекомендую возвращать только dic и выполнять инициализацию переменной в' created' hook. Кроме того, массив 'createSelection' должен находиться внутри данных, а когда вы его используете, вы shoud reffer, как' this.createSelection', и еще одна вещь - не имеет смысла иметь метод (или вычисляемый метод), который именован как переменная данных. – user3479125

Смежные вопросы