允许绑定到ember组件上的任何data- *属性

时间:2017-01-26 12:07:55

标签: ember.js

我正在设计一个库,我希望允许用户提供他们可能喜欢的任何data属性。

{{my-component data-type='hello' data-name='world'}}

我不能提前知道他们可能想要绑定哪些data属性,因此无法将它们添加到attributeBindings数组中。

有解决方法吗?

2 个答案:

答案 0 :(得分:2)

使用组件的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

看看ServiceStack.Interfaces

弃用后更新:

由于不推荐didReceiveAttrs(){ let attributeBindings = Ember.A(); Object.keys(this).forEach((attr)=>{ if(attr.indexOf('data-')>= 0){ attributeBindings.pushObject(attr); } }); this.set('attributeBindings', attributeBindings); } 函数的参数,您需要更改代码如下:

0 0 10,15/12 * * ?

请参阅Sample twiddle

答案 1 :(得分:0)

我想在v3.10之后,您可以do this without any hacks进行尖括号调用(如果需要,可以进一步使用...attributes进行传递)。所以在我最简单的情况下,它就像

<MyComponent data-aaa="bbb"/>