0

在以下示例中,使用新的 Router v2 API,ember 应用程序的行为与预期相同,但有一个异常。当悬停在动态创建的链接上时,使用注册的#linkTo Handlebars url 显示未定义。

我如何在 URL 中有一个 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'});
    });
  });
});

我知道这确实显示“未定义”,但这会很好(车把)

{{#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 数据

这是一个示例小提琴 http://jsfiddle.net/R2SPs/6/

4

2 回答 2

4

这适用于 ember 路由 v2.1 (01.16.13)

感谢 IRC 上 #emberjs 上的 rakl,这是一个解决问题的 mixin

   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
});
于 2013-01-18T02:46:47.047 回答
0

路由的路径是“todo.index”,资源定义为:

this.resource('todo', {path: '/:slug'}, ...

所以为它创建路由和控制器。

于 2013-01-17T12:49:08.550 回答