Убедитесь, что объект определен перед вызовом функции - angularJS

0

Я в настоящее время реализую anno.JS для своего проекта, и у меня есть следующая проблема: мой контроллер получает конфигурацию для объекта в переменной, которая недоступна в конструкторе (но, например, в функции $onInit). Но у меня есть одна проблема:

Определение моего анно следующего

this.anno1 = new AnnoModule.Anno(this.annoConfig);

работает в целом, поэтому определение работает, но почему-то (когда я вызываю this.anno1.show() он говорит: " Cannot read property 'show' of undefined, и когда я смотрю в инструментах разработчика, я вижу, что anno1 не определено, поэтому Мне нужно как-то убедиться, что anno определен, прежде чем вызывать функцию show.

В настоящее время у меня есть определение в init, поэтому

$onInit(){
    this.anno1 = new AnnoModule.Anno(this.annoConfig);
}

И тогда у меня есть функция

showAnno(){
    this.anno1.show();
}

который вызывается нажатием кнопки.

Как я могу убедиться, определена анно?

EDIT: Как я сказал, showAnno() вызывается при нажатии кнопки, теперь я попытался вызвать функцию автоматически, когда страница загружена специальным параметром get-parameter, и она работает. Кроме того, в Инструментах разработчика вы видите, что this.anno1 имеет его значения, тогда как после нажатия кнопки его нет... То, что я действительно не понимаю тогда, это то, что я просто отлаживал его и заметил, что anno1 определенно инициализирован (если я нажимаю кнопку или нет), но при нажатии кнопки anno1 снова не задан, тогда как другой метод все еще определен.

Edit2: проблема решена. Так или иначе, у меня была проблема с this в функции showAnno() (что было неправильно). Теперь мне нужно было вызвать .bind(this) и теперь это работает.

  • 0
    Добавьте это к вашей кнопке: ng-disabled="!controllerName.anno1" . Это отключит кнопку, пока anno1 не будет инициализирован. (Я использовал controllerName потому что я не знаю, как вы определили свой контроллер в своем представлении, но похоже, что вы используете синтаксис controllerAs, основанный на вашем использовании this. )
  • 0
    @Lex, но есть ли разница между ожиданием минуты до щелчка или отключением? Потому что, как долго я жду, кажется, не загружается ..
Показать ещё 7 комментариев
Теги:

1 ответ

0
if(this.anno1 != null){
this.anno1.show();
}

но что вы хотите, чтобы он сделал, если он равен нулю? Подождите?

  • 0
    У меня уже была та же идея, но что меня интересует, так это то, что всякий раз, когда я нажимаю кнопку (которая вызывает showAnno()-function , она все равно не определяется ...)
  • 0
    Если бы это был я, я бы отключил кнопку, пока она не будет определена. Как только это будет сделано, определите, затем активируйте кнопку.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню