遇到 ember (v.3.x) 的问题,并且无法弄清楚原因。我在文档和这里都没有找到任何东西(在我的案例中有效)。
所以,这就是问题所在:这在我的 Controller 中的计算属性 (undefined.get('filter')) 中返回了 undefined。我的函数的其余部分有效,所以我没有把它放在这里。
// in dic.js (controller):
export default Controller.extend({
filter: '',
filteredTerms: computed('filter', () => {
const x = this.get('filter');
// ...
}),
对应的输入域:
// in dic.hbs
{{input value=filter}}
在我的路由中,我只返回模型,它应该被那个函数过滤。
最佳答案
答案很简单:不要对计算使用箭头函数。这应该有效:
filteredTerms: computed('filter', function () {
const x = this.get('filter');
// ...
这是普通函数和箭头函数的根本区别。箭头函数没有自己的 this
上下文。箭头函数内部的 this
始终与外部相同。好吧,在这种情况下,它确实在对象之外,因此是全局上下文。所以你得到 window
/undefined
取决于你是否处于严格模式。
一般规则:
- 如果你想访问外部的
this
或根本不使用this
,请使用箭头函数 - 当你想要一个
this
-context 时使用普通函数
关于ember.js - 这在 Controller 中未定义(ember,3.x),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51589894/