2016-07-04 3 views
0

Я что-то вроде этого в моем маршруте:Перейти к новому маршруту пункта после создания в Emberjs

actions: { 
    save(title, description) { 
    const newCard = this.get('store').createRecord('card', { title, description }); 
    newCard.save().then((card) => { 
     // card.id contains the id of the new card 
     this.transitionTo('cards.all'); // problem with this line 
    }); 
    } 
} 

Я хочу, чтобы перейти на новый маршрут карты после его создания. Я могу получить id нового товара от card.id. Я попытался следующие, но не использовать:

this.transitionTo('cards.card', card.id); 

Это бросает ошибку, поскольку cards.card маршрут не может найти id в Params.

Следующая:

this.transitionTo('cards/' + card.id); 

бросает ошибку о том, что cards/45 маршрут не найден, но если новый элемент будет создан, и я могу перейти к ней.

Я использую Ember 2.6.1.

EDIT

Мой router.js файл:

this.route('cards', function() { 
    this.route('all'); 
    this.route('card', {path: '/:card_id'}, function() { 
    this.route('edit'); 
    }); 
    this.route('new'); 
}); 
+0

Вы должны опубликовать свой маршрутизатор. js-файл при задании вопроса о маршрутизации, чтобы мы знали, какие маршруты доступны, вложенность и тому подобное! – locks

+0

имеет смысл. спасибо, что указали это. –

ответ

0

Это должно быть так:

this.transitionTo('cards.card', card); 

Я только должен был сделать это, так как мой card.js ожидал PARAMS объект, и я пытался передать номер:

model(params) { 
    return this.store.find('card', params.id); 
} 
1

Является ли это то, что ваш маршрутизатор в настоящее время выглядит?

this.route('cards', function() { 
    this.route('all'); 
    this.route('card', {path: '/:card_id'}, function() { 
    this.route('edit'); 
    }); 
    this.route('new'); 
}); 

Если ваше желание пойти на новый маршрут для конкретной карты, то вам необходимо будет определить слизняк для нового. Что-то вроде

this.route('new', {path: /:card_id}); 

Переход в вашей действия хэш хотел бы так:

this.transitionTo('new', card.id); 

Надеюсь, я понять ваш случай использования правильно.

+0

Я не думаю, что это сработает. Проблема в том, что вновь созданный элемент еще не имеет идентификатора. –

+0

Запустите инспектор ember и установите точку разрыва (то есть, отладчик;) прямо перед переходом. Затем проверьте состояние новой карты, которую вы только что сохранили, чтобы подтвердить, есть ли у вас идентификатор или нет. – Visualjeff

+0

Я хочу перейти к 'this.route ('cards.card', card.id)' после создания нового элемента, но когда я это делаю, он бросает мне эту ошибку '' 'Ошибка при обработке маршрута: cards.card. index Assertion Failed: вы не можете передать неопределенный идентификатор в метод поиска магазина Ошибка: Assertion Failed: вы не можете передать undefined как id в метод поиска магазина''', но если я сделаю 'console.log (card.id)', он дает мне правильный «id». Кроме того, я пробовал делать this.transitionTo ('cards.card', 1) ', но он бросил мне ту же ошибку. но «карты/карты/1» присутствует. –

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