UI-роутер: передавая в параметре, что не в URL?

У меня проблема с передачей параметра, который не является параметром в URL.

У меня в основном есть следующее по событию клика

let stateParams = {
    id: event.info.id,
    info: event.info
};

this.$state.go('home.showinfo', stateParams);

Я дважды проверил на StateParams содержит идентификатор, а также информационный объект.

Затем у меня есть следующие настройки на состояние

.state('home.showinfo', {
    url: 'info/info/:id',
    resolve: {
        info: function($stateParams){
            return $stateParams.info;
        }
    },
    params: {
        info: null
    }

В моем контроллере я проверяю значение $ stateparams и вижу идентификатор (также URL содержит идентификатор), но информационный объект имеет значение null. Это всегда ноль. Я просто хочу иметь возможность получить доступ к нему в контроллере. Также "this.info" также является нулевым.

Я поставил точку останова в резоле, и информация пуста.

Я пытался удалить params:{} выше и еще ничего.

Есть идеи, что я делаю не так?

1 ответ

Решение

Есть рабочий поршень

Код должен работать, проверьте дважды вызывающую сторону. Эти ссылки будут делать то, что ожидается:

<a ui-sref="home.showinfo({id:1, info:'hi'})">
<a ui-sref="home.showinfo({id:2, info:'bye'})">

Существует состояние, как указано выше:

.state('home.showinfo', {
    url: 'info/info/:id',
    templateUrl: 'showinfo.tpl.html',
    resolve: {
        info: function($stateParams){
            return $stateParams.info;
        }
    },
    params: {
        info: null
    }
})

Проверьте это здесь

Другие вопросы по тегам