例如,给出以下代码:
{{my-component foo="bar" baz="qux"}}
在my-component/component.js
文件中,我需要一个方法来获取所有传递的属性,如下所示:
{
foo: "bar",
baz: "qux"
}
Ember是否有办法做到这一点?还是唯一的办法是做些骇人听闻的事情?
答案 0 :(得分:2)
最好的方法是执行Object.keys(this.attrs).map(k => this[k])
(Ember 3.1+
)。或Object.keys(this.attrs).map(k => this.get(k))
(所有Ember版本)。
请勿直接使用this.attrs
。这些值以非常怪异的方式包装,并且可能会很快从余烬中删除。看看this。对于模板,{{@arg}}
已添加到余烬中。对于js代码,我们将来可能会遇到类似this.args
的情况。现在,我将始终直接访问this
上的参数,但是我认为使用Object.keys(this.attrs)
获取传递给该组件的所有参数的名称是可以的。
答案 1 :(得分:0)
是的,您可以获取传递到组件中的属性。只需在组件内调用this.get('attrs')
,您将获得传递的属性的对象。
您将无法从模板内访问attrs,因此您需要创建一个计算属性,该属性返回所需的数据。 如果您严重依赖传入的attrs列表,则需要加入didReceiveAttrs或didUpdateAttrs并通知计算的属性它应该更新。