javascript - 从 Vue.js 2 中的方法内推送到数组

标签 javascript vue.js vuejs2

我希望从 Vue.js 2 中的方法内推送到数组,Vue 正在 Laravel 中使用,我收到以下响应。有更好的方法吗?

Uncaught TypeError: _vm.createSelection is not a function

我希望创建的是:

selection[
{food: Chicken, quantity: 3},
{food: Rice, quantity: 2},
{food: Pasta, quantity: 1}
];

正在使用以下代码:

<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" v-on:input="createSelection()">
    </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,
        createSelection: [],
        creditsPerMeal
      }
    },
    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]]
               })
           }
       }
     }
  }
</script>

更新方法

methods: {
   createSelection (){
       for (var i = 0; i < JSON.parse(this.f).length; i++) {
           this.createSelection.push({
              food: JSON.parse(this.f)[i],
              quantity: creditsPerMeal[JSON.parse(this.f)[i]]
           })
       }
   }
 }

最佳答案

您的 data 方法正在创建一个名为 createSelection 的数组属性,这可能会隐藏/替换 createSelection 方法 你正在定义。确保您为所有成员使用唯一的名称。

关于javascript - 从 Vue.js 2 中的方法内推送到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41709187/

相关文章:

javascript - JQuery error() 函数在 IE 中不起作用

javascript - Bootstrap Dropdown JavaScript 不适用于多个下拉菜单

javascript - 每次导出一个新的对象

javascript - VueJS在选择相同文件时重新读取文件输入

javascript - Vuejs 2 : how to detect img. 完整属性

javascript - 以编程方式触发点击

javascript - Uniform.js 样式替代 SexyCombo 表单选择

javascript - Vue.js,找不到方法内的函数

laravel - 如何从 Axios GET 请求的 url 获取参数?

javascript - 我们如何将参数传递给已经构建的 Vue JS 应用程序?