Когда пользователь вводит вход с md-чипами и фокус удаляется, запись все еще присутствует. есть ли способ удалить любую запись, которая не является чипом после удаления фокуса? The Out Standing Text still shows once the focus is removedПоле ввода md-chips и md-autocomplete
ответ
Как правило, вы должны быть в состоянии сделать это с помощью ng-blur
, но по какой-то причине есть проблема с этой директивой в использовании с md-autocomplete
: https://github.com/angular/material/issues/3906
Но я пытался решить эту проблему по-другому, не самый правильный путь, но он работает. Что вам нужно сделать, это связать событие с blur
в input
внутри md-autocomplete
. В этом случае вам нужно очистить свой searchText из md-autocomplete. Так просто связать это событие в контроллере как-то так:
angular.element(document.querySelector('md-autocomplete input')).bind('blur',
function(){
setTimeout(function(){
angular.element(document.querySelector('md-autocomplete')).scope().ctrl.searchText = '';
angular.element(document.querySelector('md-autocomplete')).scope().$apply();
}, 300);
}
)
Причина, почему я использовал тайм-аут был тот факт, что чип не был добавлен, если переменная SearchText была очищена слишком быстро. Но когда я добавил 300 мс задержки, он работал, как я и ожидал. Конечно, есть лучший способ сделать это, но просто попробуйте сделать это таким образом, и, возможно, этого вам будет достаточно.
Здесь исправна codepen: http://codepen.io/anon/pen/QdNydx
Спасибо за ответ Patryk. Кажется, он не работает. функция никогда не будет вызвана в моем контроллере. Я думаю, это может быть потому, что я использую контроллер как синтаксис. vm = this; поэтому, когда я заменил ctrl.searchText на мой vm.searchText, он, похоже, не имеет никакого эффекта. – Flash
Попробуйте поэкспериментировать в консоли вашего браузера. Попытайтесь использовать 'angular.element (document.querySelector ('md-autocomplete')). Scope()' и проверить, какая переменная является вашим контроллером, и убедитесь, что у вас есть правильная текстовая переменная поиска –
А также, если вы присоедините свой код вам будет легче помочь:) plunkr, codepen или jsfiddle помогли бы еще больше –