javascript-Dropzone.js回调访问Angular作用域
作者:互联网
我建立了一个简单的AngularJS指令,以在元素上实现Dropzone.js.
我想在指令外使用ng-repeat显示上载的文件,但是由于该元素的“ addedfile”回调似乎正在创建数组(scope.files)的副本,所以我无法使其正常工作.回调可以读取数组(或数组的副本),但是当我在其上推送新元素时,不会影响ng-repeat.我该如何运作?
.directive('dropzone', function() {
return {
restrict: 'EA',
link: function(scope, el, attrs) {
el.dropzone({
url: attrs.url,
maxFilesize: attrs.maxsize,
init: function() {
scope.files.push({file: 'added'}); // here works
this.on('success', function(file, json) {
});
this.on('addedfile', function(file) {
scope.files.push({file: 'added'}); // here doesn't work
});
}
})
}
}
});
解决方法:
由于这种情况发生在Angular领域之外,因此您必须通过将更改包装在$apply中来通知Angular:
this.on('addedfile', function(file) {
scope.$apply(function(){
scope.files.push({file: 'added'});
});
});
标签:angularjs,dropzone-js,javascript 来源: https://codeday.me/bug/20191030/1970929.html