javascript - 在 VueJS 中将父函数传递给子组件

标签 javascript vue.js

我正在练习 VueJS 1.0,并且正在学习组件。 在这个example , 有一个 input元素和必须供应coupon或某种 code来自 API。我必须验证。我有我的 <coupon >组件并具有 when-applied 的 Prop . when-applied必须调用父函数 setCoupon但它不会。

我只收到这个错误 this.whenApplied is not a function .

    <div id="demo" class="list-group">
        <script id="coupon-template" type="x-template">
            <input type="text" v-model="coupon" v-on:blur="whenCouponHasBeenEntered">
            <div v-text="text"></div>
        </script>
      <coupon when-applied="setCoupon"></coupon>
    </div>

这是我的 app.js文件

Vue.component('coupon', {
  template: '#coupon-template',

  props: ['whenApplied'],

  data: function() {
    return {
      coupon: '',
      invalid: false,
      text: ''
    } 
  },


  methods: {
    whenCouponHasBeenEntered: function() {
      this.validate();
    },

    validate: function() {
      if( this.coupon == 'FOOBAR') {
        this.whenApplied(this.coupon);
        return this.text = '20% OFF!!';
      }

      return this.text = 'that coupon doesn`t exists';
    }
  }
});

new Vue({
  el: '#demo',

  methods: {
    setCoupon: function(coupon) {
      alert('set coupon'+ coupon);
    }
  }
});

有人请帮忙。非常感谢您的建议。

最佳答案

您应该绑定(bind)属性:

<coupon v-bind:when-applied="setCoupon"></coupon>

或者您可以使用 v-bind 的简写语法:

<coupon :when-applied="setCoupon"></coupon>

阅读更多关于 props 的信息 here .

关于javascript - 在 VueJS 中将父函数传递给子组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34391454/

相关文章:

javascript - JQuery 在 Internet Explorer 11 下无法使用计算机名称

javascript - 如何从 mongodb 获取数据到 html 表单字段?

javascript - jQuery 初学者 - 解释这个 if 语句的逻辑?

javascript - 如何在b-form-input中显示默认值?在Vue中

html - 如何根据链接是外部链接还是内部链接在Vue中动态呈现<router-link>或<a>?

javascript - 需要迭代包含 Vue 对象的数组

javascript - 如何获取Vue模板中点击的组件的id(或任何其他属性)?

vue.js - 如何通过 vuex 使用 v-if 隐藏段落?

vue.js - 如何在 NuxtJs 路由中使用 *(星号)?

javascript - 在数组中查找重复对象的有效方法