Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.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_Angularjs_Angular Material - Fatal编程技术网

Javascript 谁在调用函数?

Javascript 谁在调用函数?,javascript,angularjs,angular-material,Javascript,Angularjs,Angular Material,在我的应用程序中,发生了一些奇怪的事情 我的控制器有两个功能,一个用于添加选项卡,一个用于删除选项卡 代码如下: $scope.createTab = function(){ $scope.addTab("New Tab",50,0); console.log($scope.mbpTabs.length); } $scope.deleteTab= function (index){ $scope.mbpTabs.splice(inde

在我的应用程序中,发生了一些奇怪的事情

我的控制器有两个功能,一个用于添加选项卡,一个用于删除选项卡

代码如下:

$scope.createTab = function(){
         $scope.addTab("New Tab",50,0);
         console.log($scope.mbpTabs.length);
    }

$scope.deleteTab= function (index){
        $scope.mbpTabs.splice(index,1);
    }
我省略了addTab的代码,因为我认为我的问题不需要它

这是我的选项卡的结构:

   <md-tabs class="stretch-height" flex md-selected="mbpSelectedIndex" md-border-bottom md-autoselect md-dynamic-height> 
    <md-tab ng-repeat="tab in mbpTabs" md-on-select="onTabSelected(tab)">
        <md-menu context-menu>
            <div flex class="mbpTable" ng-right-click="$mdOpenContextMenu($event)">{{tab.title}}</div>
            <md-menu-content>
                <md-menu-item >
                    <md-button  ng-click="deleteTab($index)" ng-disabled="mbpTabs.lenght<=1">
                       Delete
                    </md-button>
              </md-menu-item>

            </md-menu-content>
        </md-menu>  
        <md-tab-body>
                ...
        </md-tab-body> 
    </md-tab>
    <md-tab md-on-select="createTab()">
            <md-tab-label>
                <div class="mbpTable" >+</div>
            </md-tab>               
 </md-tabs>

{{tab.title}}
删除
...
+
当我从关联菜单中选择delete选项时,删除某些内容后会触发
createTab
函数(如浏览器调试器中所示)。我怎样才能知道它是什么?我在代码中找不到任何东西(我试图在整个项目中对
createTab
命令进行大量研究,但我弄不清楚)

谢谢

编辑:

按照下面的建议,下面是
createTab
的调用堆栈:

看来这不是我的错

编辑2:

仅当已创建新选项卡时才会发生这种情况

编辑3:

它只能在某些条件下工作:

1) 只有在以前已选择了某个选项卡而当前未选择该选项卡时,删除新选项卡才能正常工作(不会创建新选项卡)

2) 只有在未创建新选项卡的情况下,才能删除在页面加载时创建的选项卡


我仍然无法解释。

这里
mdon select=“createTab()”
,删除旧选项卡后,此选项卡被选中。您可以尝试将此绑定到另一个事件。

此处
mdon select=“createTab()”
,删除旧选项卡后,此选项卡将被选中。您可以尝试将此绑定到另一个事件。

我不确定这是否是问题所在,因为我需要检查渲染的DOM,但您有未关闭的标记
,它可能会导致块重叠,并且可以在单击deleteTab块时触发这两个函数。

我不确定这是否是问题所在,因为我需要检查渲染的DOM,但您有未关闭的标记
,这可能会导致块重叠,并可在单击deleteTab块时触发两个函数。

将调试器放入createTab函数中,并跟踪控制台中的堆栈跟踪将调试器放入createTab函数中,并跟踪控制台中的堆栈跟踪解决该问题,对于每个已删除的选项卡,创建两个新选项卡解决此问题,对于每个已删除的选项卡,创建两个新选项卡这不是问题,我希望在删除一个选项卡时不要创建选项卡。@IginoBoffa此选项卡在删除旧选项卡时被选中,并触发md on select事件。这不是问题,我不希望在删除某个选项卡时创建该选项卡。@IginoBoffa此选项卡在删除旧选项卡时被选中,并触发md on select事件。