Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 指令作用域未被破坏_Javascript_Html_Angularjs_Directive - Fatal编程技术网

Javascript 指令作用域未被破坏

Javascript 指令作用域未被破坏,javascript,html,angularjs,directive,Javascript,Html,Angularjs,Directive,我使用的指令是使用ng文件上传上传文件。此指令包含在从主控制器调用的模式窗口中。我正在从主控制器调用$rootScope.$broadcast事件,并在指令中侦听该事件。当用户打开模态两次(或更多次)时,我遇到了一些问题,似乎每个被调用指令的指令作用域都没有被破坏,并且在作用域中运行了两次。$on directive call 模态视图 <div class="dup-group-doc2 col-md-9" data-ng-if="carvm.isEdit"> <up

我使用的指令是使用ng文件上传上传文件。此指令包含在从主控制器调用的模式窗口中。我正在从主控制器调用$rootScope.$broadcast事件,并在指令中侦听该事件。当用户打开模态两次(或更多次)时,我遇到了一些问题,似乎每个被调用指令的指令作用域都没有被破坏,并且在作用域中运行了两次。$on directive call

模态视图

<div class="dup-group-doc2 col-md-9" data-ng-if="carvm.isEdit">
    <upload-document add-button="true" delete-button="false" review-obj="carvm.review" document-types="carvm.documentTypes" agencies="carvm.agenciesByReview" module="'CAR'" show-upload-button="false" show-add-button="true" event="carvm.event">>
    </upload-document>
</div>
<div class="form-group row">
                        <label for="customDocName" class="col-md-4 control-label text-right">Document Name:</label>
                        <input type="text" class="col-md-3" id="customDocName" placeholder="Name document (optional)" data-ng-model="reviewObj.docObj.docName" data-ng-change="onChange()">
                        <input ng-if="!isEdit" type="file" class="col-md-5" ngf-select ng-model="$parent.docFile" name="file" ngf-max-size="5MB" required value="Choose File" ngf-model-invalid="errorFile" validfile>
                    </div>
指令视图

<div class="dup-group-doc2 col-md-9" data-ng-if="carvm.isEdit">
    <upload-document add-button="true" delete-button="false" review-obj="carvm.review" document-types="carvm.documentTypes" agencies="carvm.agenciesByReview" module="'CAR'" show-upload-button="false" show-add-button="true" event="carvm.event">>
    </upload-document>
</div>
<div class="form-group row">
                        <label for="customDocName" class="col-md-4 control-label text-right">Document Name:</label>
                        <input type="text" class="col-md-3" id="customDocName" placeholder="Name document (optional)" data-ng-model="reviewObj.docObj.docName" data-ng-change="onChange()">
                        <input ng-if="!isEdit" type="file" class="col-md-5" ngf-select ng-model="$parent.docFile" name="file" ngf-max-size="5MB" required value="Choose File" ngf-model-invalid="errorFile" validfile>
                    </div>

我不能说您的指令是否被破坏,但对于您当前的代码,您的侦听器无论如何都不会被范围破坏

$rootScope.$on('callDirective', function(event, object) { ... });
此行返回一个注销函数。当您的作用域被破坏时,您必须使用它

var unregister = $rootScope.$on('callDirective', function(event, object) { ... });

scope.$on('$destroy', unregister);

陛下我不知道你是否明白。调用destroy方法时,您打算如何使用它?我想从主控制器调用$on。与您的范围相关的提案。$on(“$destroy”,注销);它永远不会超过美元。