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函数从未被调用。看起来有人对此进行了否决,没有留下任何评论。我想知道发生了什么事。答案仍然有效,仍然很好。