在ember路由中使用序列化钩子

 繁华落尽的星空 发布于 2023-01-30 19:54

在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属性拉动动态段.

但我无法理解在路由类中使用序列化挂钩

1 个回答
  • 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>
    

    2023-01-30 19:56 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有