请耐心等待我,因为我是Ember的新手,我正在使用ember.js,我正在尝试在HTML属性中传递模型ID,以便jQuery可以识别它有一个id。所以,我在会徽模板中这样做:
each step in steps
tr
td = step.position
td = step.name
td = step.address
td
a href='#' style='display:inline-block;' data-reveal-id="reviews_modal_#{step.id}" class='photos_link' Reviews
step是一个ember对象/模型,我试图通过给它一个id来引用它“data-reveal-id =”reviews_modal _#{step.id}“...
检查Chrome中的元素后,会返回以下内容:
<a href="#" style="display:inline-block;" data-reveal-id="reviews_modal_<script id='metamorph-13-start' type='text/x-placeholder'></script>1<script id='metamorph-13-end' type='text/x-placeholder'></script>" class="photos_link">Reviews</a>
请注意,它似乎传递了正确的step.id(1),但也传递了大量的ember脚本标记,这不是我想要的。
所以我的快速问题是:如何在HTML属性中使用step.id属性,以便我可以使用jQuery唯一标识该标记?
感谢您的帮助 - 我是一个Ember新手!
答案 0 :(得分:2)
看看bindAttr。在控制器中,您可以定义一个属性,该属性返回您想要属性的任何内容。然后,您可以在模板中说出{{bindAttr data-reveal-id="propertyName"}}
类似的东西:
App.PostController = Ember.Controller.extend({
title: "the title"
});
并在您的模板中
{{#each post in posts}}
<section {{bindAttr id="title"}} >
<!-- blah blah blah -->
</section>
{{/each}}
愚蠢的例子,但你得到了要点。
更新:
就像旁注一样,title属性也可以是模型的属性。记住Ember以这种方式检查控制器 - &gt;型号 - &gt;路由器。如果要使用视图中定义的属性,请使用view.property