编程语言
首页 > 编程语言> > javascript-Dropzone.js回调访问Angular作用域

javascript-Dropzone.js回调访问Angular作用域

作者:互联网

我建立了一个简单的AngularJS指令,以在元素上实现Dropzone.js.
我想在指令外使用ng-repeat显示上载的文件,但是由于该元素的“ a​​ddedfile”回调似乎正在创建数组(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