【发布时间】:2016-07-08 17:52:29
【问题描述】:
我目前正在为我的项目实现anno.JS,我遇到以下问题:我的控制器在构造函数中无法访问的变量中获取对象的配置(但例如在$onInit 函数中) .但是我有一个问题:
定义我的 anno 如下
this.anno1 = new AnnoModule.Anno(this.annoConfig);
通常有效,因此定义有效,但不知何故(当我调用 this.anno1.show() 时,它说 Cannot read property 'show' of undefined,当我查看开发人员工具时,我可以看到 anno1 未定义,所以我会以某种方式需要确保在调用 show 函数之前定义了 anno。
目前我在init中有定义,所以
$onInit(){
this.anno1 = new AnnoModule.Anno(this.annoConfig);
}
然后我就有了函数
showAnno(){
this.anno1.show();
}
在单击按钮时调用。
如何确保已定义 anno?
编辑:
正如我所说,单击按钮时会调用 showAnno(),现在我尝试在使用特殊 get 参数加载页面时自动调用该函数,并且它可以工作。此外,在开发人员工具中,您看到 this.anno1 有它的值,而在单击按钮后它没有......当时我真的不明白的是,我只是调试了它,并注意到anno1 已定义初始化(如果我单击按钮或未单击按钮),但单击按钮时, anno1 再次未定义,而其他方法仍定义。
Edit2:问题已解决。不知何故,我在函数showAnno() 中遇到了this 的问题(这是错误的)。现在我需要打电话给.bind(this),现在它可以工作了。
【问题讨论】:
-
将此添加到您的按钮:
ng-disabled="!controllerName.anno1"。这将禁用按钮,直到anno1被初始化。 (我使用了controllerName,因为我不知道您是如何在视图上定义控制器的,但是根据您对this.的使用,您似乎正在使用controllerAs 语法) -
@Lex 但是等待一分钟直到单击或禁用它之间有区别吗?因为我等了多久,它似乎没有加载..
-
$onInit()甚至被调用了吗?那个功能不是只在组件控制器中使用吗?你把它写成组件了吗? -
@Lex 它是一个指令控制器,是的。是的,我仔细检查了该函数是否被调用...
-
明确一点,使用
ng-disabled方法没有工作。那是对的吗?你能用你尝试过的方法更新你的问题并描述结果吗?
标签: javascript angularjs