【问题标题】:Passing Data From Ember Into HTML in an Emblem Template在 Ember 模板中将数据从 Ember 传递到 HTML
【发布时间】:2013-05-01 13:38:52
【问题描述】:

请耐心等待,因为我是 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 新手!

【问题讨论】:

  • 您可以在itemController 中定义一个计算属性,然后将该属性与{{bindAttr}} 助手一起使用,例如{{bindAttr data-reveal-id=a_computed_property_that_returns_your_text}}

标签: javascript jquery ember.js emblem.js


【解决方案1】:

看看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 以这种方式检查控制器 -> 模型 -> 路由器。如果要使用视图中定义的属性,请使用view.property

【讨论】:

  • 虽然这看起来不错,但在绑定到id 属性时要小心。 data-* 通常是 Ember 的更好选择。
  • 好的,这很有帮助。谢谢你的建议。但是您将如何引用控制器中步骤的 ID。例如,tour 对象有很多步骤,即 tour.steps。每个步骤都有一个 id。我如何能够在控制器中引用这些步骤和那些 id?谢谢。
  • 失败:试图在评论中写标志。无论如何,请查看此要点,了解您如何在会徽中纠正这一点:gist.github.com/machty/2b2694c2c718a1481b70
猜你喜欢
  • 2020-03-19
  • 1970-01-01
  • 2016-08-20
  • 2015-10-31
  • 1970-01-01
  • 2022-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多