Я использую $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.