在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文档说:
如果您的动态段以_id结尾,则默认模型挂钩会将第一部分转换为应用程序命名空间上的模型类(post变为App.Post).然后它将使用动态段的值调用该类的find.默认的serialize钩子将使用模型对象的id属性拉动动态段.
但我无法理解在路由类中使用序列化挂钩
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>