2016-06-30 6 views
4

У меня есть приложение с 2-состояниями:Угловая ui.router динамический пользовательский интерфейс-sref

  • profile
  • settings

У меня есть связь, которая повторяется в целом мое приложение:

<a ui-sref="profile({id:profile.id})" ui-sref-active="active">Current state + ID</a> 

Как я могу изменить ui-sref как динамический? - для представления текущего состояния наряду с текущим stateParam, что я хочу (что id)

при поиске решения, иметь в виду, что я хочу быть abble использовать ui-sref-active, так что я предпочел бы избежать нг-клик на что-то вроде этого.

+0

Может вы разрабатываете? Неясно, что вы имеете в виду с динамическими и переменными stateParam ... –

+0

см. [Это] (https://github.com/angular-ui/ui-router/wiki/URL-Routing#url-parameters) –

+0

Использовать $ state.href() и ng-href, как описано здесь: [http://stackoverflow.com/questions/24349731/dynamically-set-the-value-of-ui-sref-angularjs](http://stackoverflow.com/questions/24349731/dynamically-set-the-value-of-ui-sref-angularjs) –

ответ

6

Я думаю, что ui-sref проанализирует то, что находится внутри (и) как выражение.

Итак, все, что вам нужно сделать, это.

<a ng-repeat="step in steps" ui-sref="{{step.state}}(step.param)"></a> 
+0

можете ли вы опубликовать фрагмент с этим? Посмотрите хорошо, но не уверен, что будет работать ... you –

+1

[Изменение состояния и параметров динамически в ui-sref] (http://stackoverflow.com/questions/32997064/change-both-state-and-params-dynamically- in-ui-sref) –

+0

Спасибо! Выглядит очень хорошо ... узнал сегодня! –

1

Я думаю, самым безопасным и понятным способом является использование простой if else:

<div ng-if="checkState == 'profile'"> 
     <a ui-sref="profile({id:profile.id})" ui-sref-active="active">Current state + ID</a> 
</div> 

<div ng-if="checkState == 'settings'"> 
     <a ui-sref="settings({id:profile.id})" ui-sref-active="active">Current state + ID</a> 
</div> 

уверен, что будет работать ...

+0

Будет, но я не могу этого сделать. Здесь у меня есть 2 состояния, но в моем приложении-приложении у меня больше 2. Я не могу создавать горы условий. Это хорошее решение, но не для моего дела. Благодаря! – user3800799

+0

Ваш ответ с @Muhammad Usman –

1
$scope.routers = [ 
    { 
    state: 'profile', 
    params: {id: 1} 
    }, 
    { 
    state: 'settings', 
    params: {id: 1} 
    } 
]; 

Вид:

<a ng-repeat="router in routers" ui-sref="{{router.state}}(router.params)"></a> 
+0

{{router.state}}() -() также необходимы. –

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