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

时间:2013-01-17 20:42:54

标签: ember.js ember-router

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

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

我需要以某种方式获取serialize方法中点击的元素网址,以便我可以从模型中获取该文章的数据。在id的情况下,我看起来很明显应该如何做到这一点,但我不知道如何使用url进行此操作。

2 个答案:

答案 0 :(得分:3)

与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}}

就是这样。就这么简单。

答案 1 :(得分:1)

您可以这样重新定义路线

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});
  }
});

请参阅http://emberjs.com/guides/routing/specifying-a-routes-model/#toc_dynamic-models