2013-04-09 2 views
1

Я пытаюсь реализовать очень распространенный шаблон списка/детали, например таблицы в примере peepcode или сообщения в блоге в недавнем обзоре tom dale screencast. Только в моем случае должен быть выбран первый элемент и детали, отображаемые при вводе маршрута common/items. Поэтому, когда вы переходите в/items, он должен автоматически изменять URL-адрес/items/1 и отображать список, а также данные.Список/Детальный паттерн: Автоматический выбор первого элемента

Это то, что я пробовал:

App.ItemsRoute = Ember.Route.extend({ 
    model: function() { 
    return App.Item.find(); 
    }, 

    redirect: function() { 
    if(Ember.isEmpty(this.modelFor('item'))) { 
     firstItem = this.model().get('firstObject'); 
     this.replaceWith('item', firstItem); 
    } 
    } 
}); 

Полный пример: http://jsfiddle.net/ralph/zeKH9/5/

Проблема заключается в том, когда вы добавляете переадресацию на маршрут пунктов, список элементов не отображается больше, только детали товара (попробуйте удалить часть перенаправления в ItemsRoute, чтобы увидеть, что я имею в виду).

Итак, что является лучшим способом достичь этого?

ответ

3

При перенаправлении вам необходимо перенаправить с одного маршрута на другой маршрут.

item Вложено внутри items. Поэтому я думаю, что Ember.js запутывается, потому что переход на item не означает увольнения items.

Вместо того, чтобы перенаправлять от items к item, вы должны перенаправить от items.index к item.

item входит в items, что означает items ->item не имеет особого смысла.

item не входит в items.indexitems.index, что означает ->item является другой маршрут, и так должно работать.

Updated fiddle

+0

Ровно! Мне нужно только перейти от items.index, это та часть, которую я отсутствовал. Большое вам спасибо, и спасибо за обновление скрипки. Это сделало ваш пункт очень ясным. :) –

Смежные вопросы