@NicoBurno
Разработчик-прокрастинатор

Как вызвать переменное выражение без явно указанного контекста?

Здравствуйте. Я пишу приложение на AngularJS. Суть проблемы в следующем:

  • У меня в приложении есть роуты.
  • В каждом роуте мой кастомный конфиг.
  • В конфиге есть важная переменная, обязательная для всех роутов.
  • Некоторые роуты используют один и тот же шаблон и контроллер и переменная таких роутов может меняться в зависимости от условий которые я задам.


Прямо в конфиге роутов я задать это не могу, так как роуты конфигурируются еще до инициализации приложения и нужных мне сервисов.
Для этого я решил перехватывать событие изменения URL и проставлять переменную в зависимости от результата выполнения условия.

------

Если отойти от контекста Angular и локализовать проблему, то получится следующее.

Сейчас в принципе все работает, но учитывая, что приложение очень крупное...
Я НЕ хочу писать так:
(this['myAwesomeFunction']() - this['foo']) > 0 ? true : false


А хочу писать так:
(myAwesomeFunction() - foo) > 0 ? true : false

Это сильно упростило бы разработку. Но ко мне в голову ничего не приходит лучше чем сложное преобразование переменной-выражения.

Может я что-то делаю не так? Наверняка есть более деликатные решения
  • Вопрос задан
  • 122 просмотра
Решения вопроса 1
IonDen
@IonDen
JavaScript developer. IonDen.com
Фича в том, что либо вы проникнетесь духом ангуляра и его правилами. И будете писать так, как ангуляр вам рекомендует это делать, либо вы начнете все больше и больше костылить.

А по поводу функций, все пишут через обычную точечную нотацию:
this['foo']() // плохо
this.foo() // хорошо

// в крайнем случае никто не мешает вам сделать так:

var a = this.foo;
a();

Пример: jsfiddle.net/IonDen/xyoLvxuf
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы