md-chips和md-autocomplete输入字段

时间:2017-01-06 16:00:54

标签: angular-material md-autocomplete md-chip

当用户输入带有md-chips的输入并且焦点被移除时,该条目仍然存在。一旦焦点被删除,有没有办法删除任何不是芯片的条目? The Out Standing Text still shows once the focus is removed

1 个答案:

答案 0 :(得分:1)

通常,您应该可以使用ng-blur来执行此操作但由于某些原因,该指令与md-autocomplete一起使用时出现问题:https://github.com/angular/material/issues/3906

但是我尝试以不同的方式解决它,而不是最正确的方式,但它有效。您需要做的是将事件与blur input内的md-autocomplete绑定。在这种情况下,您必须清除md-autocomplete的searchText。所以只需在控制器中绑定那个事件就像那样:

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毫秒延迟时,它按预期工作。肯定有更好的方法可以做到这一点,但只是尝试这样做,也许这对你来说已经足够了。

以下是工作代码:http://codepen.io/anon/pen/QdNydx