Skip to content
This repository was archived by the owner on Sep 5, 2024. It is now read-only.

Commit 70175fd

Browse files
author
Robert Messerle
committed
re-adds disconnect scope logic as an opt-in feature
1 parent f4c91b3 commit 70175fd

File tree

3 files changed

+22
-6
lines changed

3 files changed

+22
-6
lines changed

src/components/tabs/js/tabsController.js

+1
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ function MdTabsController ($scope, $element, $window, $mdConstant, $mdTabInkRipp
3333
defineBooleanAttribute('noDisconnect');
3434
defineBooleanAttribute('autoselect');
3535
defineBooleanAttribute('centerTabs', handleCenterTabs);
36+
defineBooleanAttribute('enableDisconnect');
3637

3738
// define public properties
3839
ctrl.scope = $scope;

src/components/tabs/js/tabsDirective.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -88,10 +88,10 @@ angular
8888
.module('material.components.tabs')
8989
.directive('mdTabs', MdTabs);
9090

91-
function MdTabs ($mdTheming, $mdUtil, $compile) {
91+
function MdTabs () {
9292
return {
9393
scope: {
94-
selectedIndex: '=?mdSelected',
94+
selectedIndex: '=?mdSelected'
9595
},
9696
template: function (element, attr) {
9797
attr[ "$mdTabsTemplate" ] = element.html();
@@ -179,7 +179,6 @@ function MdTabs ($mdTheming, $mdUtil, $compile) {
179179
md-swipe-right="$mdTabsCtrl.swipeContent && $mdTabsCtrl.incrementIndex(-1)"\
180180
ng-if="$mdTabsCtrl.hasContent"\
181181
ng-repeat="(index, tab) in $mdTabsCtrl.tabs"\
182-
md-connected-if="tab.isActive()"\
183182
ng-class="{\
184183
\'md-no-transition\': $mdTabsCtrl.lastSelectedIndex == null,\
185184
\'md-active\': tab.isActive(),\
@@ -189,8 +188,9 @@ function MdTabs ($mdTheming, $mdUtil, $compile) {
189188
}">\
190189
<div\
191190
md-template="::tab.template"\
191+
md-connected-if="tab.isActive()"\
192192
md-scope="::tab.parent"\
193-
ng-if="tab.shouldRender()"></div>\
193+
ng-if="$mdTabsCtrl.enableDisconnect || tab.shouldRender()"></div>\
194194
</md-tab-content>\
195195
</md-tabs-content-wrapper>\
196196
';

src/components/tabs/js/templateDirective.js

+17-2
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,39 @@ angular
22
.module('material.components.tabs')
33
.directive('mdTemplate', MdTemplate);
44

5-
function MdTemplate ($compile) {
5+
function MdTemplate ($compile, $mdUtil) {
66
return {
77
restrict: 'A',
88
link: link,
99
scope: {
1010
template: '=mdTemplate',
11+
connected: '=?mdConnectedIf',
1112
compileScope: '=mdScope'
1213
},
1314
require: '^?mdTabs'
1415
};
1516
function link (scope, element, attr, ctrl) {
1617
if (!ctrl) return;
17-
var compileScope = scope.compileScope;
18+
var compileScope = ctrl.enableDisconnect ? scope.compileScope.$new() : scope.compileScope;
1819
element.html(scope.template);
1920
$compile(element.contents())(compileScope);
2021
element.on('DOMSubtreeModified', function () {
2122
ctrl.updatePagination();
2223
ctrl.updateInkBarStyles();
2324
});
25+
return $mdUtil.nextTick(handleScope);
26+
27+
function handleScope () {
28+
scope.$watch('connected', function (value) { value === false ? disconnect() : reconnect(); });
29+
scope.$on('$destroy', reconnect);
30+
}
31+
32+
function disconnect () {
33+
if (ctrl.enableDisconnect) $mdUtil.disconnectScope(compileScope);
34+
}
35+
36+
function reconnect () {
37+
if (ctrl.enableDisconnect) $mdUtil.reconnectScope(compileScope);
38+
}
2439
}
2540
}

0 commit comments

Comments
 (0)