Проблема с компилятором eval и закрытием Google - PullRequest
1 голос
/ 14 апреля 2011

Я использую Google Closure, чтобы сжать мой код, но у меня проблема со следующей строкой кода:

        eval('this.find(\''+ element_to_append_the_controller+ '\').'+controller_to_load+'(options_for_controller)');

Я должен использовать eval, потому что метод (controller_to_load) мне нужноВыполнение элемента является переменной и зависит от параметров, которые я получаю.

Моя проблема заключается в том, что я должен передать объект этому методу, поэтому я делаю это как строковое представление имени переменной (options_for_controller), но закрытие изменит это имя и не изменит имя переменной в моей строке eval.

Мои решения будут такими:

  • получение имени переменной динамически в виде строки
  • синтаксический анализ объекта (с функциями обратного вызова) до строки
  • отключение сжатия для этих строк кодов

Но как мне сделать один из них или есть другое решение?

Спасибо

Ответы [ 2 ]

3 голосов
/ 14 апреля 2011

Некоторые программисты используют eval, потому что они не понимают, вместо того, чтобы писать eval('a.' + b), вы можете написать a[b]

Попробуйте вместо eval ()

this.find(element_to_append_the_controller.toString())[controller_to_load](options_for_controller);
0 голосов
/ 14 апреля 2011
this.find(element_to_append_the_controller.toString())[controller_to_load](options_for_controller)

AKA не использует eval.

...