Angular / Typescript当前范围更改时引用父范围

时间:2015-08-05 16:30:19

标签: angularjs typescript dropzone.js

我编写了一个角度控制器,它使用dropzone指令删除表单上的文件。我在我的控制器中添加了一个事件,当通过dropzone上传文件时,该事件会触发。但是,我需要将文件设置为主控制器中定义的变量,但范围已更改,因此未定义变量。这是代码的基础

module WU_TombstonesAdmin.controllers {
    export class tombstonesEditController {
        tombstoneId: number;
        tombstone: ITombstone;
        svc: WU_TombstonesAdmin.core.interfaces.ITombstonesAdminService;

        static $inject = ['WU_TombstonesAdmin.core.services.TombstoneService',
            '$routeParams', '$location'];

        constructor(fs: WU_TombstonesAdmin.core.services.TombstoneService,
            private $routeParams,
            private $location) {

            this.svc = fs;

            if ($routeParams.ID) {
                this.tombstoneId = $routeParams.ID;
            }
            if (this.tombstoneId == -1) {
                this.initializeTombstone();
                this.isAdding = true;
            } else {
                this.isAdding = false;
                this.getTombstone();
            }
        }

        fileUploadComplete = (file: any) => {
            console.log(file.name);
            //I need to set the tombstone.file to this uploaded file
            //but the root tombstone file doesn't exists since the 
            //context is now the dropzone context/
        }
    }
}

那么,关于如何从fileUploadComplete事件设置根“墓碑”的任何想法?

更新

我最终没有使用dropzone指令,只是显式设置dropzone并将onComplete事件添加到获取模块范围的常规javascript函数中,将文件名设置为文件然后应用范围。

我仍然无法弄清楚如何从我的控制器内的事件中访问$ rootScope ...我真的更喜欢这样做。

1 个答案:

答案 0 :(得分:0)

  

有关如何从该fileUploadComplete事件设置根“墓碑”的任何想法?

有很多方法可以做到这一点。一种方法是在tomsbtone上使用$rootScope并将其注入MainController以及指令中。

文档:https://docs.angularjs.org/api/ng/type/ $ rootScope.Scope

次要提示:您可能需要在fileUpload中调用$rootScope.$apply()来触发角度摘要。