1
我正在設計一個庫,我希望允許用戶提供他們可能喜歡的任何data
屬性。允許綁定到任何一個餘燼組件上的data- *屬性
{{my-component data-type='hello' data-name='world'}}
我不知道提前,他們可能要綁定到data
屬性,因此不能將它們添加到attributeBindings
陣列。
是否有解決方法?
我正在設計一個庫,我希望允許用戶提供他們可能喜歡的任何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);
}
的外觀,Sample twiddle
更新,折舊後:
由於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。
它值得讀取rfc deprecate-component-lifecycle-hook-args。 https://github.com/emberjs/rfcs/blob/master/text/0191-deprecate-component-lifecycle-hook-args.mdhttps://github.com/emberjs/rfcs/blob/master/text/0191- deprecate-component-lifecycle-hook-args.md – kumkanillam
謝謝。 RFC僅提及刪除'arguments'。在這種情況下,相同的代碼可以稍作修改:而不是Object.keys(newAttrs),只需使用Object.keys(this)'。 – ykaragol
不幸的是,現在已經完全棄用,不能再使用了。如果任何人有一個聰明的想法如何解決這個與當前的燼版,我會對解決方案非常感興趣。 – TeeJaay