我有一个Ember组件checkout-form
,它包含一些处理结帐过程的逻辑。
{{#checkout-form}}
{{#each model.courses.otherDates as |date|}}
{{course-date model=date selectDate=(action selectDate) }}
{{/each}}
{{/checkout-form}}
在checkout-form.js
组件中,我执行了以下操作:
selectDate(day) {
this.set("startAt", day.get("serverString"))
}
最后,在course-date.js
组件中,我有:
click () {
const courseStart = this.get('courseStart')
this.get('selectDate')(courseStart)
}
但是,在运行此代码时,我得到错误:
ember.debug.js:19818 Assertion Failed: Action passed is null or undefined in (action) from <site@controller:checkout/date::ember389>.
我在这里遗漏了什么?我正在将操作传递到course-date
组件中,但不确定它为什么要请求控制器?
1条答案
按热度按时间toe950271#
错误原因是,
您正在访问
selectDate
,它在该作用域(即控制器)中未定义。如果您在将打印selectDate value is undefined
的checkout-form中执行{{log 'selectDate value is ' selectDate}}
,那么如果您要访问组件中定义的任何属性和操作,则该组件应生成这些值。下面是twiddle which demonstrates如何从组件中产生操作。
application.hbs
application.js
templates/components/checkout-form.hbs -在这里,我们将生成
selectDate
操作components/checkout-form.js
course-date.hbs -这里我们只是使用传递给这个组件的关闭操作。