Я использую несколько глобальных констант javascript для обмена информацией о состоянии между контроллерами на моей странице. Возможно, это плохая идея, но она помогает мне сократить количество ошибок при печати и централизует место, где я придумываю эти имена, в одном месте в моем коде.
Различные части моей страницы в разных контроллерах предназначены для отображения или скрытия в зависимости от этих глобальных состояний. Итак, у меня есть одно состояние, которое определено
const DISPLAY_STATE_CHART = "showChart";
и родительская область нескольких заинтересованных контроллеров может запрашивать карту, поддерживаемую этой родительской областью. Карта может быть запрошена ключом, который, основываясь на этих константах состояния, вроде:
state = $scope.$parent.displayStateMap.get(DISPLAY_STATE_CHART);
состояние - логическое значение, которое используется для определения, должен ли отображаться div или нет.
Итак, на моей странице я хочу отобразить div, если «состояние» истинно,
Я включаю нг-если:
<div ng-if="getDisplayState(DISPLAY_STATE_CHART)">some content</div>
В моем контроллере у меня есть функция, определенная как:
$scope.getDisplayState(when_display_state) {
return $scope.$parent.displayStateMap(when_display_state);
}
Однако константное имя, закодированное в HTML, каким-то образом не проходит, и когда__дисплей_state представляется как «неопределенное».
Если я изменю HTML, чтобы использовать строковое значение, например
<div ng-if="getDisplayState('showChart')">some content</div>
это работает, как и ожидалось, поэтому очевидно, что проблема в том, что любая часть Angular интерпретирует html-строку, присоединенную к ng-if, каким-то образом не знает об этих глобальных константах.
Есть ли решение для этого?
Спасибо.