Подтвердить что ты не робот

Как я могу передавать пользовательские данные в состояние из представления в ui-router?

Я использую $stateProvider для конфигурации моего маршрута. Я хотел воспользоваться предоставляемыми ими пользовательскими данными для передачи некоторых пользовательских данных с одной частичной страницы на другую (по ng-click).

Это лучшее, что я получил до сих пор:

Прикрепить пользовательские данные к объектам состояния

Вы можете прикрепить пользовательские данные к объекту состояния (мы рекомендуем использовать свойство данных, чтобы избежать конфликтов).

// Example shows an object-based state and a string-based state 
var contacts = { 
    name: 'contacts',
    templateUrl: 'contacts.html',
    data: {
        customData1: 5,
        customData2: "blue"
    }
} 
$stateProvider
    .state(contacts)
    .state('contacts.list', {
        templateUrl: 'contacts.list.html',
        data: {
            customData1: 44,
            customData2: "red"
        }
    }) 

В приведенном выше примере состояний вы можете получить доступ к данным следующим образом:

function Ctrl($state){
     console.log($state.current.data.customData1) // outputs 5;
     console.log($state.current.data.customData2) // outputs "blue";
 }

Источник

Предположим, у меня есть другое состояние, называемое клиенты, со своим собственным шаблоном и контроллером. Как я могу изменить значение объекта данных состояния контактов в контроллере/представлении клиентов? т.е. я хочу измениться с этого:

data: {
    customData1: 44,
    customData2: "red"
} 

к этому:

data: {
    customData1: 100,
    customData2: "green"
} 

Любой указатель или образец будут оценены!

Пересмотрел - у меня все заработало самостоятельно и вот как: на контроллере (скажем, customerCtrl) вы можете получить состояние контакта по имени и внести необходимые изменения, например, обновить значение свойства пользовательского объекта данных следующим образом:

 //get the state by name and change the value of custom data property

 $state.get('contacts').data.customData1= 100;
 $state.go('contacts'); // then you can make a go to that state.
4b9b3361

Ответ 1

Я получил его сам, и вот как. На контроллере (скажем: customerCtrl) вы можете получить контактное состояние по имени (https://github.com/angular-ui/ui-router/wiki/Quick-Reference#statename и искать $state.get([stateName]) )
Как только вы получите состояние, вы можете внести требуемое изменение - например, обновить значение свойства пользовательского объекта данных следующим образом:

//get the state by name and change the value of custom data property 
 $state.get('contacts').data.customData1= 100;
  // then you can go to that state.
 $state.go('contacts');

Надеюсь, это поможет кому-то.

Ответ 2

Если вы пытаетесь прочитать пользовательские данные для текущего состояния, вы можете легко прочитать его как   $state.current.data.customData1 = 100;