Skip to content

Commit 168ebf3

Browse files
Ben RubinBen Rubin
authored andcommitted
fix scope connection for filtering
1 parent be43e8e commit 168ebf3

File tree

1 file changed

+20
-5
lines changed

1 file changed

+20
-5
lines changed

src/js/branch.js

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,19 +45,21 @@ function branchDirective($parse, $document, $mdUtil, $filter, $$mdTree) {
4545
var isFilterOpen = false;
4646
if (isOpen) { startWatching(); }
4747

48+
4849
scope.$mdBranchFilter = function (value) {
49-
if (value && value.length > 2) {
50+
var filtered = $filter('filter')(value);
51+
if (filtered && filtered.length > 2) {
5052
isFilterOpen = true;
5153
blocks.forEach(function (block) {
5254
$$mdTree.filterOpen(block);
5355
});
54-
} else if ((!value || value.length < 3) && isFilterOpen) {
56+
} else if ((!filtered || filtered.length < 3) && isFilterOpen) {
5557
isFilterOpen = false;
5658
blocks.forEach(function (block) {
5759
$$mdTree.filterClose(block);
5860
});
5961
}
60-
return $filter('filter')(value);
62+
return filtered;
6163
}
6264

6365

@@ -206,14 +208,27 @@ function branchDirective($parse, $document, $mdUtil, $filter, $$mdTree) {
206208
items[index].$$depth = $scope.$depth;
207209
}
208210

211+
212+
// upate open state
213+
// disconnect/reconnect scopes
214+
// start watching for open items
209215
function updateState($scope, index) {
210216
var item = items ? items[index] : undefined;
211217
var element = $scope.$element && $scope.$element[0] ? $scope.$element : undefined;
218+
219+
// reconnect all scopes
220+
$mdUtil.reconnectScope($scope);
221+
element.toggleClass('md-open', item.$$isOpen);
222+
223+
// wait till next digest to change state so we do not get into an ifinite loop
212224
$mdUtil.nextTick(function () {
213-
element.toggleClass('md-open', item.$$isOpen);
225+
// if open then watch the data
214226
if (item.$$isOpen) {
215-
$mdUtil.reconnectScope($scope);
216227
$scope.startWatching();
228+
229+
// sconnect scopes that are closed
230+
} else {
231+
$mdUtil.disconnectScope($scope);
217232
}
218233
});
219234
}

0 commit comments

Comments
 (0)