【发布时间】:2014-09-03 18:25:16
【问题描述】:
我正在使用Tabs (ui.bootstrap.tabs) 控制\指令描述here。该控件创建它自己的控制器来设置活动选项卡:
.controller('TabsetController', ['$scope', function TabsetCtrl($scope) {
var ctrl = this,
tabs = ctrl.tabs = $scope.tabs = [];
ctrl.select = function(selectedTab) {
angular.forEach(tabs, function(tab) {
if (tab.active && tab !== selectedTab) {
tab.active = false;
tab.onDeselect();
}
});
selectedTab.active = true;
selectedTab.onSelect();
};
Tabset 子选项卡控件(子元素)在点击时可以触发父级的选择功能。
.directive('tab', ['$parse', function($parse) {
return {
require: '^tabset',
scope: {
onSelect: '&select',
我有我的自定义控制器向上的 DOM 需要触发 TabsetController 上的 select 函数以设置第一个选项卡处于活动状态。我读过我可以使用事件广播,但我不能修改TabsetController 来绑定事件监听器,所以这似乎不是一个可行的选择。有什么建议吗?
编辑:
请参阅 Plunker 以获得更好的理解 - here。
【问题讨论】:
-
不清楚是什么让您的设置与演示不同。演示已经展示了如何在本地控制器级别切换选项卡。您能否修改 plunker 示例以显示更多关于您的问题的信息?
-
Here 我已经创建了 Plunk。我需要做的是,只要在
div.words容器中单击某个单词,就始终选择第一个选项卡。目前,如果选择了第二个选项卡并且点击了div.words中的某个单词,则第二个选项卡保持活动状态。 -
谢谢,但我不明白它是如何工作的。指令定义需要包含此行
tabs = ctrl.tabs = $scope.tabs = [];的控制器。那么tabs属性如何在MainController和TabsetController之间共享,这是tabset指令所要求的? -
嘿,我在答案中添加了解释。我没有看到你在引导演示中提到的那一行,你从哪里得到的?
标签: angularjs angular-bootstrap