Приложение использует 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();
};