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

Commit f308779

Browse files
author
Robert Messerle
committed
fix(autocomplete): md-search-text-change now fires when content is deleted from text
Closes #2061
1 parent 2e157d2 commit f308779

3 files changed

Lines changed: 30 additions & 23 deletions

File tree

src/components/autocomplete/demoBasicUsage/index.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
ng-disabled="ctrl.isDisabled"
77
md-no-cache="ctrl.noCache"
88
md-selected-item="ctrl.selectedItem"
9+
md-search-text-change="ctrl.searchTextChange(ctrl.searchText)"
910
md-search-text="ctrl.searchText"
1011
md-selected-item-change="ctrl.selectedItemChange(item)"
1112
md-items="item in ctrl.querySearch(ctrl.searchText)"

src/components/autocomplete/demoBasicUsage/script.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
self.simulateQuery = false;
1616
self.isDisabled = false;
1717
self.selectedItemChange = selectedItemChange;
18+
self.searchTextChange = searchTextChange;
1819

1920
// ******************************
2021
// Internal methods
@@ -36,6 +37,10 @@
3637
}
3738
}
3839

40+
function searchTextChange(text) {
41+
$log.info('Text changed to ' + text);
42+
}
43+
3944
function selectedItemChange(item) {
4045
$log.info('Item changed to ' + item);
4146
}

src/components/autocomplete/js/autocompleteController.js

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -8,37 +8,37 @@
88

99
//-- private variables
1010

11-
var self = this,
11+
var self = this,
1212
itemParts = $scope.itemsExpr.split(/ in /i),
13-
itemExpr = itemParts[1],
14-
elements = null,
15-
promise = null,
16-
cache = {},
17-
noBlur = false,
13+
itemExpr = itemParts[1],
14+
elements = null,
15+
promise = null,
16+
cache = {},
17+
noBlur = false,
1818
selectedItemWatchers = [];
1919

2020
//-- public variables
2121

22-
self.scope = $scope;
23-
self.parent = $scope.$parent;
22+
self.scope = $scope;
23+
self.parent = $scope.$parent;
2424
self.itemName = itemParts[0];
25-
self.matches = [];
26-
self.loading = false;
27-
self.hidden = true;
28-
self.index = null;
25+
self.matches = [];
26+
self.loading = false;
27+
self.hidden = true;
28+
self.index = null;
2929
self.messages = [];
30-
self.id = $mdUtil.nextUid();
30+
self.id = $mdUtil.nextUid();
3131

3232
//-- public methods
3333

34-
self.keydown = keydown;
35-
self.blur = blur;
36-
self.clear = clearValue;
37-
self.select = select;
38-
self.getCurrentDisplayValue = getCurrentDisplayValue;
39-
self.fetch = $mdUtil.debounce(fetchResults);
40-
self.registerSelectedItemWatcher = registerSelectedItemWatcher;
41-
self.unregisterSelectedItemWatcher = unregisterSelectedItemWatcher;
34+
self.keydown = keydown;
35+
self.blur = blur;
36+
self.clear = clearValue;
37+
self.select = select;
38+
self.fetch = $mdUtil.debounce(fetchResults);
39+
self.getCurrentDisplayValue = getCurrentDisplayValue;
40+
self.registerSelectedItemWatcher = registerSelectedItemWatcher;
41+
self.unregisterSelectedItemWatcher = unregisterSelectedItemWatcher;
4242

4343
self.listEnter = function () { noBlur = true; };
4444
self.listLeave = function () { noBlur = false; };
@@ -121,6 +121,9 @@
121121
//-- clear selected item if search text no longer matches it
122122
if (searchText !== getDisplayValue($scope.selectedItem)) $scope.selectedItem = null;
123123
else return;
124+
//-- trigger change event if available
125+
if ($scope.textChange && searchText !== previousSearchText)
126+
$scope.textChange(getItemScope($scope.selectedItem));
124127
//-- cancel results if search text is not long enough
125128
if (!searchText || searchText.length < Math.max(parseInt($scope.minLength, 10), 1)) {
126129
self.loading = false;
@@ -143,8 +146,6 @@
143146
fetchResults(searchText);
144147
}
145148
self.hidden = shouldHide();
146-
if ($scope.textChange && searchText !== previousSearchText)
147-
$scope.textChange(getItemScope($scope.selectedItem));
148149
}
149150

150151
function blur () {

0 commit comments

Comments
 (0)