2013-01-17 46 views
0

在下面的示例中,使用新的Router v2 API,該ember應用程序的行爲與預期的一樣,但有一個例外。當將鼠標懸停在動態創建的鏈接上時,使用已註冊的#linkTo手柄,URL顯示未定義。Ember.js Router v2 dynamic slug

我該如何在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}} 

感謝任何指針!我使用的灰燼數據也

下面是一個例子小提琴 http://jsfiddle.net/R2SPs/6/

回答

0

路由的路徑是「todo.index」與資源定義:

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

因此,創建路由和控制器。

+0

這並不回答我有問題 - >這個小提琴應該作爲證明。 http://jsfiddle.net/R2SPs/8/ – iamjstates

4

這適用於餘燼路由V2.1(13年1月16日)

由於rakl上IRC這裏#emberjs是解決問題

App.SlugRouter = Ember.Mixin.create({ 
     serialize: function(model, params) { 
      var name, object; 
      object = {}; 
      name = params[0]; 
      object[name] = model.get('slug'); 
      return object; 
     } 
    }); 

現在只需將在一個mixin你路由器和你的黃金

App.TodoRoute = Ember.Route.extend(App.SlugRouter,{ 
    //insert your code 
}); 
+0

接下來解釋如何修復它,這將是很好的知道爲什麼這個修復它。 – albertjan

+0

@albertjan http://emberjs.com/api/classes/Ember.Route.html#method_serialize – hellvinz

+0

它的工作原理,但不刷新... – user1429980