2016-08-30 2 views
1

Прежде всего, я использую ui-router.Передача всего объекта с помощью ui-router

На самом деле я пропусканием слизняка через states и он прекрасно работает, как вы можете увидеть ниже:

.state('pages', { 
    url: '/:slug', 
    template: '<page-content></page-content>' 
}) 

<a ui-sref="pages({ slug: item.slug })" title="{{item.title}}" ng-repeat="item in $ctrl.menu_items">{{ item.title }}</a> 

Таким образом, я могу получить пулю в $stateParams и в URL. Однако, я хочу отправить целое object и сохранить URL-адрес с slug.

Ниже вы можете увидеть мою попытку:

config из состояния:

.state('pages', { 
    url: 'obj.slug', // -> What should I put here? (of course /:slug doesn't work anymore) 
    template: '<page-content></page-content>', 
    params: { obj: null } 
}) 

HTML:

<a ui-sref="pages({ obj: item })" title="{{item.title}}" ng-repeat="item in $ctrl.menu_items">{{ item.title }}</a> 

Он работает пропускание всего объекта через состояние (Я могу получить его с помощью $stateParams), однако я могу ' t динамически генерирует URL.

Пример object:

{ 
    id: 6480, 
    title: "Test", 
    slug: "test" 
} 

Итак, вопрос:

Есть ли способ, чтобы создать URL от собственности object использованием params (именно таким образом, что Я делаю)? Пример: 'site.com/test'? (test - это пуля, которую я хочу поместить в URL-адрес)

+1

набор obj.slot к varible вне объекта буквального, Somthing как это так, 'вар строка = obj.slug', а затем использовать эту строку в вашем объекте буквальным –

+1

@ZeRubeus, конфигурация состояний выполняется только в начале. – developer033

ответ

1

Вы не можете изменить определение URL-адреса после его загрузки. Вы хотите сделать что-то вроде

.state('pages', { 
    url: '/pages/:slug', // -> What should I put here? 
    template: '<page-content></page-content>', 
    params: { obj: null } 
}) 

Затем используйте «слизняк» часть, чтобы выяснить, куда идти оттуда, вероятно, от собственности решимости, которая позволит вам вводить объекты в контроллер.

Edit:

Может быть, это больше, чем вы ищете.

.state('pages', { 
     url: '/:pageName' 
     template: '<page-content></page-content>', 
     params: { obj: null } 
    }) 

то изменение состояния

$state.go('pages', {pageName: item.Name, obj: item}); 

Я не уверен, как вы бы обязательно идти об этом, что с ш-sref на якорной метки. Может быть, это?

<a ui-sref="pages({pageName: item.Name, obj: item})" 
+0

Спасибо за ответ. Я уже пробовал это, но это не сработает. URL-адрес хранится без пули. Я добавил больше контекста в свой вопрос. Взгляните, пожалуйста. – developer033

+0

@ developer033 хорошо, это немного яснее. Я обновил ответ. Если это не так, давайте дамп это в плунже. – dwbartz

+0

Я управляю им работать несколько минут назад (именно так, что вы публикуете в своем ответе), после многих попыток, однако, я проверю ваш ответ как правильный. Большое спасибо за ваше время. Cheers :) – developer033

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