AngularJS / Redux.Не удается прочитать свойство undefined из службы - PullRequest
0 голосов
/ 09 октября 2018

Приложение использует Redux / Rxjs / AngularJS.Задачи должны будут передать другой параметр в запрос GET на 2 экранах.Затем этот запрос вернул бы другой пакет ответов.

На одном экране Ctlr считывает свойство, которое я передал от service, отлично, на другом экране нет и выдает мне эту ошибку:

TypeError: Cannot read property 'protection' of undefined 

Что я здесь не так делаю?Я передал состояние избыточности обоим контроллерам и функции, чтобы оно работало, так почему оно становится неопределенным.

Разве второй экран не должен получать данные?Почему не так?Они получают данные (url) из одних и тех же модулей.

Service.js

export const getMessage = (query, live, {
  protection,
}) => {
  const encodedURL = urlEncode(query);
  const url = EXECUTE_DATA(encodedURL, live, { protection }); // It throws the error here, only on the second screen
  const options = {
    mapFn: decodeMessage,
    filterFn: message => !!message,
  };

  return wsInstance(url, options);
};

Endpoint.js

export const EXECUTE_DATA = (query, live, {protection}) => `ws/v1/sql/execute?sql=${query}${live ? '&live=true' : ''}&stats=2${!protection ? '&protection=false' : ''}`

Контроллер, который работает:

  function mapStateToController(state) {
    return {
      protection: state.data.protection,
    };
  }

  const MappedActions = {
    ...DataActions,
  };

  $scope.changeProtection = () => {
    ctrl.toggleProtection();
  };

Контроллер, который не работает:

  function mapStateToController(state) {
    return {
      protection: state.data.protection,
    };
  }

  const MappedActions = {
    ...DataActions,
  };

  $scope.changeProtection = () => {
    ctrl.toggleProtection();
  };
...