我有以下角度服务:
.factory("OTReady", ['$document', function ($document) {
var ready = false;
$document.context.addEventListener('deviceReady', function () {
ready = true;
});
return (function(fn){
if (ready) {
fn();
} else {
$document.context.addEventListener('deviceReady', fn);
}
});
}])
这是回归"未定义"。它是来自Cordova的opentok-angular library的片段。
此代码块中提供了许多其他$ document属性。为什么这会回来" undefined" ?
答案 0 :(得分:1)
我遇到了一个类似的问题,我的angular linter不赞成document.addEventListener,并且告诉我使用像您的初始服务一样的angular $ document服务。但是,只需将document.addEventListener
切换为$document.addEventListener
返回undefined。通过打印到控制台,我发现$document
是一个数组。不确定这是否有意,但将$document.addEventListener
更改为$document[0].addEventListener
对我有用。
所以你的新服务看起来像这样:
.factory("OTReady", ['$document', function ($document) {
var ready = false;
$document[0].addEventListener('deviceReady', function () {
ready = true;
});
return (function(fn){
if (ready) {
fn();
} else {
$document[0].addEventListener('deviceReady', fn);
}
});
}])
其他人应该阐明为什么这样设置。除非您可能有多个文档对象,否则数组没有多大意义。
答案 1 :(得分:0)
这解决了我:
document.addEventListener('deviceReady', fn);
我读到jQuery已经弃用了context
,但我认为这不是问题。