AngularJS等待元素完全加载
我目前正在开发pdftron实现,在webviwer尝试加载文档时,webviewer的加载速度似乎不够快。如何设置某种就绪元素,使其等待webViewer准备加载文档AngularJS等待元素完全加载,angularjs,angular-directive,pdftron,Angularjs,Angular Directive,Pdftron,我目前正在开发pdftron实现,在webviwer尝试加载文档时,webviewer的加载速度似乎不够快。如何设置某种就绪元素,使其等待webViewer准备加载文档 viewer = new PDFTron.WebViewer({ path: 'WebViewer', type: 'html5', documentType: 'pdf' }, element); $scope.watch('url', function
viewer = new PDFTron.WebViewer({
path: 'WebViewer',
type: 'html5',
documentType: 'pdf'
}, element);
$scope.watch('url', function(blobVal) {
viewer.loadDocument(blobVal);
}
我在viewer.loadDocument及其上得到一个未定义的文件,因为viewer未完全加载。它是间歇性发生的。我相信下面的代码更有意义
$scope.viewer = new PDFTron.WebViewer({
path: 'WebViewer',
type: 'html5',
documentType: 'pdf'
}, element);
$scope.$watch('viewer', function(newVal, oldVal) {
if (newVal instanceof Blob && newWal !== oldVal) {
viewer.loadDocument(newVal);
}
}
您可以使用javascript超时
setTimeout(function(){
// You can write functions that will load after Angular elements.
},500);
您想等待WebViever就绪事件。请参阅以下指南: 另请参阅以下链接:
问题是,我还需要注意url,因为当url字段更改时,它会加载一个新文档。我明白你说的“观看查看器”是什么意思,但是url呢?我需要两块手表吗?@jedgard我更新了答案,只是添加了检查
newVal!==oldVal
这个答案的问题是,即使触发$watch回调,查看器仍可能未加载/准备就绪。因此,调用viewer.loadDocument仍可能引发异常。不确定$watch的功能,但至少您还需要收听WebViewer就绪事件。请参阅@Yasser answer。应等待事件,而不是硬编码超时。潜在的情况是,如果延迟不好,设备非常慢/忙,您可能会超过超时时间,因此仍然会发生随机错误。这只会降低这种可能性,但要以任意/不必要的等待时间为代价。
var myWebViewer = new PDFTron.WebViewer({
initialDoc: 'mydoc.pdf',
ui: 'legacy'
}, viewerElement);
viewerElement.addEventListener('ready', function() {
// API functions are now ready to be called on myWebViewer
});