允许绑定到ember组件上的任何data- *属性
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了允许绑定到ember组件上的任何data- *属性相关的知识,希望对你有一定的参考价值。
我正在设计一个库,我希望允许用户提供他们可能喜欢的任何data
属性。
{{my-component data-type='hello' data-name='world'}}
我不知道他们可能想要绑定哪个data
属性,所以无法将它们添加到attributeBindings
数组中。
这有解决方法吗?
答案
使用组件的didReceiveAtts
钩子:
didReceiveAttrs(params){
let newAttrs = params.newAttrs;
let attributeBindings = Ember.A();
Object.keys(newAttrs).forEach((attr)=>{
if(attr.indexOf('data-')>= 0){
attributeBindings.pushObject(attr);
}
});
this.set('attributeBindings', attributeBindings);
}
弃用后更新:
由于不推荐使用didReceiveAttrs
函数的参数,因此您需要更改以下代码:
didReceiveAttrs(){
let attributeBindings = Ember.A();
Object.keys(this).forEach((attr)=>{
if(attr.indexOf('data-')>= 0){
attributeBindings.pushObject(attr);
}
});
this.set('attributeBindings', attributeBindings);
}
以上是关于允许绑定到ember组件上的任何data- *属性的主要内容,如果未能解决你的问题,请参考以下文章