在ember路由类中使用serialize hook有什么用?
App.PostRoute = Ember.Route.extend({
model: function(params) {
return this.store.find('post', params.post_id);
},
serialize: function(post) {
return { post_id: post.get('id') };
}
});
Ember Documentation说:
如果您的动态片段以_id结尾,则默认模型钩子会将第一部分转换为应用程序命名空间中的模型类(post成为App.Post)。然后它将使用动态段的值调用该类的find。 默认的序列化挂钩将使用模型对象的id属性拉动动态段。
但我无法理解在路由类
中使用serialize hook答案 0 :(得分:7)
serialize方法确定要用作提供实体的参数的内容。
实施例
假设您拥有以下用户模型,并具有以下属性。
id
username
email
现在,如果您有用户列表,并且想要链接到节目用户详细信息页面,则可以使用这样的循环。
{{#each users}}
{{#link-to user.show this }} {{username}} {{/link-to}}
{{/each}}
所以,当Ember看到这个链接帮助时,我会将它转换为链接,这可能看起来像这样
<a href="/user/1">elvar</a>
现在这里的默认行为是使用id作为参数,这是您自己的示例所示,我从模型中选择id。我们可以使用序列化方法更改它。
假设我们不想使用id,而是使用用户名作为参数。
App.UserShowRoute= Ember.Route.extend({
model: function(params) {
return this.store.find('user', params.user);
},
serialize: function(user) {
return { user: user.get('username') };
}
});
现在链接到帮助器将产生以下内容。
<a href="/user/elvar">elvar</a>