如何为表单输入设置自定义元素ID。例如,我想有前缀或后缀ID。这就是我得到的:
// views/extended-input.js
var suffix = function(key) {
return function() {
var result = this.get(key) + '_' + this.get('suffix');
console.log('xxx: ' + result);
return result;
}.property(key, 'suffix');
};
export default Ember.TextField.extend({
attributeBindings: ['id'],
suffix: 'from',
id: suffix('customId')
});
in hbs template
{{view 'extended-input' customId=field.name suffix='from'}}
...但是渲染输入后仍然具有设置为使用ember生成的ID属性。这很难过,因为我预期attributeBinding会将id更改为带有版本的后缀。
任何想法为什么?我哪里错了?任何人都可以给我其他工作解决方案吗?
答案 0 :(得分:0)
尝试使用elementId而不是id,没有属性绑定。假设field.name永远不会改变。
问题在于,如果变量与元素之间存在动态绑定,即所谓的唯一,静态,自识别ID属性,那么ember会让所有人感到困惑(就像其他任何事情一样),所以要小心这样做。
您也可以尝试使用classNameBindings,这可能更合适,特别是如果field.name确实发生了变化。