2015-02-05 39 views
3

我想在Ember核心表单组件中使用ARIA属性,例如input和textarea字段。ARIA属性中的烬核心表单组件

我注意到,用我的模板中的组件中的咏叹调属性,它不会在所有

{{input aria-label="Your name"}} 
{{textarea aria-label="Your address"}} 

工作,所以我决定重新开始核心部件在初始化这个属性添加到组件

export default { 
    name: 'reopenTextAreaComponent', 

    initialize: function() { 
     Ember.TextArea.reopen({ 
      attributeBindings: ['aria-label'] 
     }); 
    } 
}; 

因为我这样做,我的应用程序的性能很差。集成测试比以前需要更多的时间。

我尽量不使用他们的组件和一个简单的HTML标签:

<textarea {{bind-attr aria-label="Your address"}}>{{value}}</textarea> 

但是,这并不与车把编译!由于textarea标签中的{{value}},它返回一个错误。

避免重新打开的解决方案是什么?我应该创建我自己的组件吗?

感谢

+0

仅供参考此功能的添加正在这里讨论:https://github.com/emberjs/rfcs/pull/242 – 2017-08-08 19:56:27

回答

1

什么是避免重新解决?我应该创建我自己的组件吗?

这些是你的两个选择。

我认为你有正确的方法重新打开Ember.TextArea,因为你想在所有实例上都有aria-label

我使用了类似的初始化 - 一个区别是,我重新打开Ember.TextSupport这样既Ember.TextFieldEmber.TextArea将有aria-label结合。

// initializers/input.js 

import Ember from 'ember'; 

export function initialize(/* application */) { 

    Ember.TextSupport.reopen({ 
     attributeBindings: ['aria-label'] 
    }); 

} 

你可以尝试创建自己的组件(S),看看是否有任何性能上的差异,但我认为,重新开放是在这种情况下,正确的方法。