Я в настоящее время реализую 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)
и теперь это работает.
if(this.anno1 != null){
this.anno1.show();
}
но что вы хотите, чтобы он сделал, если он равен нулю? Подождите?
showAnno()-function
, она все равно не определяется ...)
ng-disabled="!controllerName.anno1"
. Это отключит кнопку, покаanno1
не будет инициализирован. (Я использовалcontrollerName
потому что я не знаю, как вы определили свой контроллер в своем представлении, но похоже, что вы используете синтаксис controllerAs, основанный на вашем использованииthis.
)