显示与单独控制器关联的模型

时间:2013-06-24 20:23:07

标签: javascript ember.js coffeescript ember-data

我有一个属于WebsiteTemplate的模型WebLayout。在UI中,我想显示所有webLayouts的列表,但能够将一个html类添加到其id与webLayout相同的那个。 webLayout属于websiteTemplate,这是我们正在访问的路线的模型。

关于如何做到这一点的任何想法?我知道我的设置也可能存在根本性的错误,因此欢迎提出这方面的想法。我似乎想要将另一个参数传递给具有特定render的{​​{1}},但这似乎不是Ember方式。

webLayout

我知道以下不会工作,但这是我想要完成的想法的伪代码。

# website_template model
App.WebsiteTemplate = DS.Model.extend
 webLayout: DS.belongsTo("App.WebLayout")

# website_layout model
App.WebLayout = DS.Model.extend
 name: DS.attr("string"),
 thumbnail: DS.attr("string")

# router
App.Router.map ->
 @resource "website_template", path: "/website_template/:website_template_id"

# website_template route
App.WebsiteTemplateRoute = Ember.Route.extend
 setupController: ->
 @controller.set 'webLayouts',  App.WebLayout.find()

# website_template template
{{webLayout.id}}
{{render "_webLayouts" webLayouts}}

# web_layouts template
<ul>
 {{#each controller}}
  <li>
   <a href="#" {{ action "addLayout" this }}>
    <img alt="Thumbnail" {{ bindAttr src="thumbnail" }}>
    {{ name }}
   </a>
  </li>
 {{/each}}
</ul>

1 个答案:

答案 0 :(得分:1)

初看起来我看到的是两个模型之间一对一关系的正确设置。

示例:

# website_template model
App.WebsiteTemplate = DS.Model.extend
  webLayout: DS.belongsTo("App.WebLayout")

# website_layout model
App.WebLayout = DS.Model.extend
  name: DS.attr("string"),
  thumbnail: DS.attr("string"),
  websiteTemplate: DS.belongsTo("App.WebsiteTemplate")

至于id的比较,你可以写一个自定义的把手帮手,基本上是这样的:

Ember.Handlebars.registerHelper('equal', function(value1, value2, options) {
  if (value1 === value2) {
    return options.fn(this);
  } else {
    return options.inverse(this);
  }
});

然后像这样使用它:

{{#equal webLayouts.id webLayout.id}}
  are equal
{{else}}
  not equal
{{/equal}}

请在此处查看自定义帮助程序的工作jsbin

希望它有所帮助。