2014-02-06 36 views
2

我有model其中(旁边的其他字段)有id字段。主要的问题是如何做到以下几点:
<tr class="{{tableStripes id}}">其中tableStripes的助手定义为:把手插值元素属性?

Ember.Handlebars.helper('tableStripes', function(index) { 
    return (index % 2) ? "even" : "odd"; 
}); 

更有趣的(​​对我来说)是最后的结果在浏览器中:

<tr class="<script id='metamorph-10-start' type='text/x-placeholder'></script>even<script id='metamorph-10-end' type='text/x-placeholder'></script>"> 

从哪里自带?正如我可以看到助手返回好结果(脚本标记之间的“偶数”)。

+0

是'''Ember.Handlebars.helper'''''' Ember.Handlebars.registerBoundHelper'''? – Viele

+0

是的,它是一样的。 – Kingpin2k

回答

1

你需要unbound,如果你不希望它将metamorph注入类中。有一个警告不过,如果你正在改变数据,绑定将不更新,你会想在另一种可能性看看下面

<tr class="{{unbound tableStripes id}}"> 

你也可以模仿助手bind-attr是怎么做的:bind-attr source

+0

感谢它的工作。我新来的烬(和句柄)你能解释什么是变质吗?顺便说一下,我也尝试以下列方式绑定attr: 我认为即时通讯做错了。 – Srle

+0

是的,Ember将绑定属性与metamorph脚本标签包装起来,这样它就可以在dom中找到并替换单个属性,而无需重新绘制整个dom。所以他们基本上是占位符。当你使用解除绑定时,它不会注入这些占位符,因为你告诉它我不打算更新这些属性,所以不需要跟踪它们在哪里。 – Kingpin2k

+0

我将'bind-attr'作为一个代码示例,您可以为自己的用途复制,bind-attr不支持作为参数之一传递帮助器。 – Kingpin2k