Как изменить данные в компонент Angular 1.5 через внешнюю службу?

Я делаю приложение с компонентами Angular 1.5. Я передаю данные в компонент через параметр resolve, таким образом я могу отображать любые данные из разных источников в одном компоненте. Но я не понимаю, как изменить некоторые данные в моем компоненте.

Например, у меня есть User service, который работает с пользователями через API. В моем состоянии я загружаю компонент и использую метод Users.get(). Я использую UI Router.

//...
$stateProvider
      .state('users', {
        url: '/users',
        component: 'formPage',
        resolve: {
          values: function(Users) {
            return Users.get();
          });
//...

//...
component('formPage', {
  bindings: {
    values: '<'
  },
//...

У меня есть форма в этом компоненте и я хочу изменить данные. Я хочу вызвать метод Users.update(), когда форма будет отправлена. Но компонент ничего не знает о сервисе Users, и это правильно.

Как я могу указать, что компонент должен использовать Users.update() для обновления данных в этом состоянии? И как я вызываю этот метод в компоненте, когда форма будет отправлена?


person Sergey Kopylov    schedule 26.10.2016    source источник


Ответы (1)


resolve: {
  values: function(Users) {
    return Users.get();
  },
  onUpdate: function(){
    return Users.update.bind(Users);
  }
);

bindings: {
    values: '<',
    onUpdate: '<'
},

и вы можете назвать это как $ctrl.onUpdate(data).then(...

person Valery Kozlov    schedule 26.10.2016