Jes*_*lon 5 javascript coffeescript ember.js ember-data
我有一个WebsiteTemplate属于a的模型WebLayout.在UI中,我想显示所有的列表,webLayouts但是能够将一个html类添加到id与webLayouts 的相同的那个.webLayout属于websiteTemplate,这是我们正在访问的路线的模型.
关于如何做到这一点的任何想法?我知道我的设置也可能存在根本性的错误,因此欢迎提出这方面的想法.看起来我想要传递另一个参数来render具体webLayout,但这似乎不是Ember的方式.
# 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>
Run Code Online (Sandbox Code Playgroud)
我知道以下内容不起作用,但这里是我想要完成的想法的伪代码.
# website_template template
{{render "_webLayouts" webLayouts webLayout}}
# web_layouts template
<ul>
{{#each webLayouts in controller}}
{{#if webLayouts.id is webLayout.id}}
<li class="selected">
{{else}}
<li>
{{/end}}
<a href="#" {{ action "addLayout" this }}>
<img alt="Thumbnail" {{ bindAttr src="thumbnail" }}>
{{ name }}
</a>
</li>
{{/each}}
</ul>
Run Code Online (Sandbox Code Playgroud)
乍一看,我发现缺少的是两个模型之间一对一关系的正确设置。
例子:
# 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")
Run Code Online (Sandbox Code Playgroud)
至于 id 的比较,您可以编写一个自定义车把助手,它基本上如下所示:
Ember.Handlebars.registerHelper('equal', function(value1, value2, options) {
if (value1 === value2) {
return options.fn(this);
} else {
return options.inverse(this);
}
});
Run Code Online (Sandbox Code Playgroud)
然后像这样使用它:
{{#equal webLayouts.id webLayout.id}}
are equal
{{else}}
not equal
{{/equal}}
Run Code Online (Sandbox Code Playgroud)
请参阅此处自定义帮助程序的工作jsbin 。
希望能帮助到你。
| 归档时间: |
|
| 查看次数: |
223 次 |
| 最近记录: |