Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.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
Angularjs 为什么自定义指令中的函数在重新进入屏幕时会触发两次?_Angularjs_Angularjs Directive - Fatal编程技术网

Angularjs 为什么自定义指令中的函数在重新进入屏幕时会触发两次?

Angularjs 为什么自定义指令中的函数在重新进入屏幕时会触发两次?,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我有一个自定义指令,返回各种模板文件,根据其类型选择、复选框等构建调查问题,但我的指令的行为会根据我是否已经访问过它而改变,尽管我已经完全离开了url,并希望销毁了它的任何剩余部分 基本上,changeDate应该在输入由tempdate设置触发的指令时运行一次,tempdate应该更新模板上的标签。正在隐藏此实际输入元素。问题是,如果我完全离开使用此模板的页面,然后返回到该页面,则changeDate函数将运行两次,而不管它内部是什么或它的功能是什么 datepicker.html <d

我有一个自定义指令,返回各种模板文件,根据其类型选择、复选框等构建调查问题,但我的指令的行为会根据我是否已经访问过它而改变,尽管我已经完全离开了url,并希望销毁了它的任何剩余部分

基本上,changeDate应该在输入由tempdate设置触发的指令时运行一次,tempdate应该更新模板上的标签。正在隐藏此实际输入元素。问题是,如果我完全离开使用此模板的页面,然后返回到该页面,则changeDate函数将运行两次,而不管它内部是什么或它的功能是什么

datepicker.html

<div class="question-title q-element"><div>{{question.question[language]}}</div></div>
  <div class="question-response">
    <ng-form  name="innerForm">
        <span>
            <span ng-show="question.response" class="select-label-pos">{{formattedDate}}</span>
            <span ng-show="!question.response" class="select-label-pos">Pick a Date</span>
        </span>
        <input ng-change="changeDate()" ng-required="{{question.mandatory}}" ng-model="tempdate"  type="date">
    </ng-form>
</div>
survey.html

<a id="top"></a>
    <div id="survey" class="snap-container">
        <div id="header">
            <h1>Capture Data </h1>
            <a href="#/home">
                <div class="home-button">
                </div>
            </a>
            <div class="menu-button" snap-toggle="right">
            </div>
        </div>
        <div class="surveys-container">
            <div id="template" ng-repeat="asset in template | filter:{type:'html'}">

                <ng-include src="addAssetPath(asset.path)"></ng-include>
            </div>
            <div ng-show="currentGroup == false" class="groupMenu overlay-view">
                <h2  class="group-title">Lead Capture</h2>
                <div ng-repeat="group in survey.groups|orderBy:'group_order'" >
                    <div  ng-click="changeGroup(group.group_name.en)" class=" menu-group-title">

                        <span>{{group.group_name.en}}</span>

                        <span ng-if="group.group_name.en != 'Barcode'" class="arrow-icon ui-icon"></span>
                        <span ng-if="group.group_name.en == 'Barcode'" class="scan-icon ui-icon"></span>
                    </div>
                </div>
                <button class="action-button client-gradient-submit" ng-click="submitForm()">Submit</button>
                <button class="action-button client-gradient-draft" ng-click="saveDraft()">Save</button>
            </div>
            <div ng-show="currentGroup == group.group_name.en"  class="group group-container overlay-view" ng-repeat="group in survey.groups|orderBy:'group_order'">
                {{logTest(group.group_name.en, $index)}}
                <h2  class="group-title">{{group.group_name.en}}</h2>
                <div class=" question-container {{question.css_class.en}}" ng-repeat="question in group.questions|orderBy:'question_order'">

                    <div class="" ng-switch="question.type">
                        <div input-directive="text" question="question" language="{{surveyLang}}" draft="{{draft}}"  ng-switch-when="S">

                        </div>
                        <div input-directive="select" question="question" language="{{surveyLang}}" draft="{{draft}}" ng-switch-when="!">

                        </div>
                        <div input-directive="radio" question="question" language="{{surveyLang}}" draft="{{draft}}" ng-switch-when="L">

                        </div>
                        <div input-directive="textarea" question="question" language="{{surveyLang}}" draft="{{draft}}" ng-switch-when="T">

                        </div>
                        <div input-directive="checkbox" question="question" language="{{surveyLang}}" draft="{{draft}}" ng-switch-when="M">

                        </div>
                        <div input-directive="datepicker" question="question" language="{{surveyLang}}" draft="{{draft}}" ng-switch-when="D">

                        </div>
                        <div input-directive="other" question="question" language="{{surveyLang}}" draft="{{draft}}" ng-switch-default>

                        </div>
                    </div>
                </div>
                <button class="done-button" ng-click="changeGroup(false)" ng-show="currentGroup != false">Done</button>

            </div>


        </div>

    </div>

我也有同样的问题,你找到解决办法了吗?
<a id="top"></a>
    <div id="survey" class="snap-container">
        <div id="header">
            <h1>Capture Data </h1>
            <a href="#/home">
                <div class="home-button">
                </div>
            </a>
            <div class="menu-button" snap-toggle="right">
            </div>
        </div>
        <div class="surveys-container">
            <div id="template" ng-repeat="asset in template | filter:{type:'html'}">

                <ng-include src="addAssetPath(asset.path)"></ng-include>
            </div>
            <div ng-show="currentGroup == false" class="groupMenu overlay-view">
                <h2  class="group-title">Lead Capture</h2>
                <div ng-repeat="group in survey.groups|orderBy:'group_order'" >
                    <div  ng-click="changeGroup(group.group_name.en)" class=" menu-group-title">

                        <span>{{group.group_name.en}}</span>

                        <span ng-if="group.group_name.en != 'Barcode'" class="arrow-icon ui-icon"></span>
                        <span ng-if="group.group_name.en == 'Barcode'" class="scan-icon ui-icon"></span>
                    </div>
                </div>
                <button class="action-button client-gradient-submit" ng-click="submitForm()">Submit</button>
                <button class="action-button client-gradient-draft" ng-click="saveDraft()">Save</button>
            </div>
            <div ng-show="currentGroup == group.group_name.en"  class="group group-container overlay-view" ng-repeat="group in survey.groups|orderBy:'group_order'">
                {{logTest(group.group_name.en, $index)}}
                <h2  class="group-title">{{group.group_name.en}}</h2>
                <div class=" question-container {{question.css_class.en}}" ng-repeat="question in group.questions|orderBy:'question_order'">

                    <div class="" ng-switch="question.type">
                        <div input-directive="text" question="question" language="{{surveyLang}}" draft="{{draft}}"  ng-switch-when="S">

                        </div>
                        <div input-directive="select" question="question" language="{{surveyLang}}" draft="{{draft}}" ng-switch-when="!">

                        </div>
                        <div input-directive="radio" question="question" language="{{surveyLang}}" draft="{{draft}}" ng-switch-when="L">

                        </div>
                        <div input-directive="textarea" question="question" language="{{surveyLang}}" draft="{{draft}}" ng-switch-when="T">

                        </div>
                        <div input-directive="checkbox" question="question" language="{{surveyLang}}" draft="{{draft}}" ng-switch-when="M">

                        </div>
                        <div input-directive="datepicker" question="question" language="{{surveyLang}}" draft="{{draft}}" ng-switch-when="D">

                        </div>
                        <div input-directive="other" question="question" language="{{surveyLang}}" draft="{{draft}}" ng-switch-default>

                        </div>
                    </div>
                </div>
                <button class="done-button" ng-click="changeGroup(false)" ng-show="currentGroup != false">Done</button>

            </div>


        </div>

    </div>