在以下示例中,使用新的Router v2 API,ember应用程序按预期运行,但有一个例外。将鼠标悬停在动态创建的链接上时,使用已注册的#linkTo Handlebars,url显示为undefined。
如何在网址中设置一个slug字段?
这是模型
App.Todo = DS.Model.extend({
slug: DS.attr('string'),
date: DS.attr('date'),
updated: DS.attr('date'),
task: DS.attr('string'),
description: DS.attr('string')
});
我的路由器
App.Router.map(function(match){
this.route('index', {path: '/'});
this.resource('todos', {path: '/todos'}, function(){
this.resource('create', {path: '/create'});
this.resource('todo', {path: '/:slug'}, function(){
this.resource('edit', {path: 'edit'});
});
});
});
我知道这确实显示'未定义',但这将是一个不错的(Handlebars)
{{#each todo in tasks}}
<div class="user">
{{#linkTo todo todo.slug}}<h4><i class="icon-list"></i>{{todo.task}}</h4>{{/linkTo}}
<p>{{todo.description}}</p>
</div>
{{/each}}
感谢您的任何指示!我也在使用Ember-data
这是一个小例子 http://jsfiddle.net/R2SPs/6/
答案 0 :(得分:4)
这适用于ember routing v2.1(01.16.13)
感谢IRC上#emberjs上的rakl,这是一个解决问题的混合
App.SlugRouter = Ember.Mixin.create({
serialize: function(model, params) {
var name, object;
object = {};
name = params[0];
object[name] = model.get('slug');
return object;
}
});
现在把它放在你的路由器和你的黄金
中App.TodoRoute = Ember.Route.extend(App.SlugRouter,{
//insert your code
});
答案 1 :(得分:0)
路径的路径是“todo.index”,其中包含资源定义:
this.resource('todo', {path: '/:slug'}, ...
为此创建路由和控制器。