在Emblem模板中将数据从Ember传递到HTML

时间:2013-05-07 14:37:14

标签: javascript jquery ember.js emblem.js

请耐心等待我,因为我是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_&lt;script id='metamorph-13-start' type='text/x-placeholder'&gt;&lt;/script&gt;1&lt;script id='metamorph-13-end' type='text/x-placeholder'&gt;&lt;/script&gt;" class="photos_link">Reviews</a>

请注意,它似乎传递了正确的step.id(1),但也传递了大量的ember脚本标记,这不是我想要的。

所以我的快速问题是:如何在HTML属性中使用step.id属性,以便我可以使用jQuery唯一标识该标记?

感谢您的帮助 - 我是一个Ember新手!

1 个答案:

答案 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