Я использую Tabs (ui.bootstrap.tabs)
control\directive, описанную здесь. Элемент управления создает свой собственный контроллер, который устанавливает активную вкладку:
.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();
};
Элементы управления дочерними вкладками набора вкладок (дочерние элементы) могут запускать родительскую функцию выбора при нажатии на них.
.directive('tab', ['$parse', function($parse) {
return {
require: '^tabset',
scope: {
onSelect: '&select',
У меня есть свой собственный контроллер вверх по DOM, который должен вызвать функцию select
на TabsetController
, чтобы активировать первую вкладку. Я читал, что могу использовать трансляцию событий, но я не могу изменить TabsetController
для привязки прослушивателя событий, поэтому это не кажется жизнеспособным вариантом. Какие-либо предложения?
ИЗМЕНИТЬ:
Для лучшего понимания см. Plunker — здесь.
div.words
. В настоящее время, если выбрана вторая вкладка и есть щелчок по слову внутриdiv.words
, вторая вкладка остается активной. - person Max Koretskyi   schedule 14.07.2014tabs = ctrl.tabs = $scope.tabs = [];
. Так как же свойствоtabs
распределяется междуMainController
иTabsetController
, что требуется директивойtabset
? - person Max Koretskyi   schedule 14.07.2014