Ember.js新路由器自定义slug用法

Ember.js新路由器自定义slug用法,ember.js,ember-router,Ember.js,Ember Router,我正在使用此路由器代码: Ngin.Router.map(function(match) { "use strict"; this.route('index', {path: '/'}); this.route('article', {path: '/technical/:url/'}); }); 我需要在serialize方法中以某种方式获取单击的元素url,以便从模型中获取该文章的数据。在使用id的情况下,我似乎很清楚应该如何执行此操作,但我不知道如何使用url执行

我正在使用此路由器代码:

Ngin.Router.map(function(match) {
    "use strict";
    this.route('index', {path: '/'});
    this.route('article', {path: '/technical/:url/'});
});

我需要在
serialize
方法中以某种方式获取单击的元素url,以便从模型中获取该文章的数据。在使用
id
的情况下,我似乎很清楚应该如何执行此操作,但我不知道如何使用
url

执行此操作。您可以用这种方式重新定义路由

Ngin.Router.map(function(match) {
    "use strict";
    this.route('index', {path: '/'});
    this.route('article', {path: '/technical/:url/'});
});

Ngin.ArticleRoute = Ember.Route.extend({
  model: function(params) {
    return Ngin.Article.find({'url': params.url});
  }
});

请参见

与Ember一样,解决方案很简单。唯一需要习惯的是,Ember不是jQuery,Ember中的上下文是(或应该是)数据,也就是模型

Ngin.ArticleRoute = Ember.Route.extend({
    serialize: function(model) {
        "use strict";
        return {
            url: model.get("url") + "/"
        };
    }
});
在这种情况下,必须像这样设置上下文:

{{#linkTo "article" article}}{{article.title}}{{/linkTo}}

就是这样。就这么简单。

覆盖路由器的model方法怎么样?路由器model方法理论上取代了serialize方法(尽管我对此不确定)。但是,是的,你是对的,这可能是应该做的事情。问题是,在url路由参数而不是默认id的情况下,应该如何实现这一点?顺便说一句,我正在寻找解决方案,如何只提取一个对象,而不是ModelArray。这是我在文档中读到的第一件事,但model函数从未被调用。看起来有人对此进行了否决,没有留下任何评论。我想知道发生了什么事。答案仍然有效,仍然很好。