在我的应用程序中发生了一些奇怪的事情。
我的 Controller 有两个功能,一是添加选项卡,一是删除选项卡。
这是代码:
$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>
当我从上下文菜单中选择删除选项时,删除某些内容后会触发 createTab
函数(如浏览器调试器中所示)。我怎样才能知道它是什么?我在代码中找不到任何内容(我试图在整个项目中对 createTab
命令进行大量研究,但我无法弄清楚)。
谢谢
编辑:
按照下面的建议,这是createTab
的调用堆栈:
看来这不是我的错
编辑2:
仅当已创建新选项卡时才会发生这种情况。
编辑3:
它仅在某些条件下有效:
1) 仅当之前选择了某个选项卡且当前未选择该选项卡时,才能正确删除新选项卡(不会创建新选项卡)。
2) 仅当未创建新选项卡时,删除页面加载时创建的选项卡才有效。
我还是无法解释。
最佳答案
此处md-on-select="createTab()"
,删除旧选项卡后,该选项卡将被选中。您可以尝试将其绑定(bind)到另一个事件。
关于javascript - 谁在调用该函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41220601/