0

Ember 在显示路由时使用的标准 URL 如下:

http://domainandsite/index.html/#/publications/145

(因此显示 id 为 145 的出版物)。

我在现场 Ember 站点中看到了 2 种替代表示:

  1. http://www.bustle.com/articles/3358-marc-jacobs-set-to-open-first-beauty-store-in-new-york

    因此,文章标题被添加到 id 并形成一个新的 URL。这是怎么做的?

  2. http://discuss.emberjs.com/t/what-is-the-future-for-the-emberjs-addons-organization/2168

    同样的问题,这是怎么做到的。

我不认为模型包含连接的 id 左右......看起来使用了片段标识符,但是你如何将它与 Ember 路由结合起来?

4

1 回答 1

2

您将不得不覆盖钩子modelserialize在您的路线中。以下是您的出版物代码的示例:

App.PublicationRoute = Ember.Route.extend({
    serialize : function(context){
        var rawString = context.get("id") + " " + context.get("title");
        return rawString.replace(/ /g,"-"); // replace spaces as you wish or encode the URI
    },
    model : function(params){
        var partsOfUri = params.slugName.split("-"); // split this part of the URI
        var id = partsOfUri.shift(); 
        return App.Publication.findById(id);
    }
});

还可以查看模型钩子序列化钩子的 API 文档。

于 2013-08-15T15:46:46.247 回答