|
8 | 8 |
|
9 | 9 | //-- private variables |
10 | 10 |
|
11 | | - var self = this, |
| 11 | + var self = this, |
12 | 12 | 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, |
18 | 18 | selectedItemWatchers = []; |
19 | 19 |
|
20 | 20 | //-- public variables |
21 | 21 |
|
22 | | - self.scope = $scope; |
23 | | - self.parent = $scope.$parent; |
| 22 | + self.scope = $scope; |
| 23 | + self.parent = $scope.$parent; |
24 | 24 | 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; |
29 | 29 | self.messages = []; |
30 | | - self.id = $mdUtil.nextUid(); |
| 30 | + self.id = $mdUtil.nextUid(); |
31 | 31 |
|
32 | 32 | //-- public methods |
33 | 33 |
|
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; |
42 | 42 |
|
43 | 43 | self.listEnter = function () { noBlur = true; }; |
44 | 44 | self.listLeave = function () { noBlur = false; }; |
|
121 | 121 | //-- clear selected item if search text no longer matches it |
122 | 122 | if (searchText !== getDisplayValue($scope.selectedItem)) $scope.selectedItem = null; |
123 | 123 | else return; |
| 124 | + //-- trigger change event if available |
| 125 | + if ($scope.textChange && searchText !== previousSearchText) |
| 126 | + $scope.textChange(getItemScope($scope.selectedItem)); |
124 | 127 | //-- cancel results if search text is not long enough |
125 | 128 | if (!searchText || searchText.length < Math.max(parseInt($scope.minLength, 10), 1)) { |
126 | 129 | self.loading = false; |
|
143 | 146 | fetchResults(searchText); |
144 | 147 | } |
145 | 148 | self.hidden = shouldHide(); |
146 | | - if ($scope.textChange && searchText !== previousSearchText) |
147 | | - $scope.textChange(getItemScope($scope.selectedItem)); |
148 | 149 | } |
149 | 150 |
|
150 | 151 | function blur () { |
|
0 commit comments