我正在设计一个库,允许用户提供他们可能喜欢的任何data属性。{{my-component data-type='hello' data-name='world'}}个我事先不知道他们可能想绑定到哪些data属性,所以不能将它们添加到attributeBindings数组中。是否有解决方法?
data
{{my-component data-type='hello' data-name='world'}}
attributeBindings
jw5wzhpr1#
使用组件的didReceiveAtts挂接:
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); }
看那个Sample twiddle
已更新,在弃用之后:
由于不赞成使用didReceiveAttrs函数的参数,因此需要按以下方式更改代码:
didReceiveAttrs
didReceiveAttrs(){ let attributeBindings = Ember.A(); Object.keys(this).forEach((attr)=>{ if(attr.indexOf('data-')>= 0){ attributeBindings.pushObject(attr); } }); this.set('attributeBindings', attributeBindings); }
请参阅updated twiddle。
xt0899hw2#
我想在v3.10之后,您可以通过尖括号调用(如果需要,还可以使用...attributes进一步传递)来实现这一点,而无需进行任何改动。
...attributes
<MyComponent data-aaa="bbb"/>
2条答案
按热度按时间jw5wzhpr1#
使用组件的
didReceiveAtts
挂接:看那个Sample twiddle
已更新,在弃用之后:
由于不赞成使用
didReceiveAttrs
函数的参数,因此需要按以下方式更改代码:请参阅updated twiddle。
xt0899hw2#
我想在v3.10之后,您可以通过尖括号调用(如果需要,还可以使用
...attributes
进一步传递)来实现这一点,而无需进行任何改动。