在Emberjs / handlebars中为html元素定义ID失败

时间:2014-04-03 14:37:03

标签: javascript testing ember.js handlebars.js dalekjs

我在这里有以下问题:

<ul class="aClass">
  {{#if something}}
  <li>{{#link-to "blub" bind-attr data-testid=aID}}{{loc "blub"}}{{/link-to}}</li>
  {{/if}}
</ul>

所以我希望在结果元素中有一个元素(链接到<a href="">...</a>),其id为 aId 。但该元素不包含呈现的HTML中的所需ID。像这样的东西:

<a href="" data-testid="aID">...</a>

任何想法?

2 个答案:

答案 0 :(得分:1)

尝试使用引号:

{{#link-to "blub" bind-attr data-testid="aID"}}{{loc "blub"}}{{/link-to}}

缺少引号会导致Ember在当前视图上下文中尝试查找属性,而不是仅仅按照您的意愿吐出字符串。

答案 1 :(得分:1)

在Ember中,不应在bind-attr帮助中使用link-to,因为这只应在html元素中使用:

<a {{bind-attr href=myLink}}>My Link</a>

在Handlebars助手内部,您只需直接定义属性。

{{#link-to "blub" data-testID="aID"}}{{loc "blub"}}{{/link-to}}

如果缺少引号,则不会将该属性呈现到HTML中。

但您还需要重新打开LinkView

Ember.LinkView.reopen({
    attributeBindings: ['data-testID']
});

See similar question here.

And the Ember docs here.