MD 芯片和 MD 自动完成输入字段



当用户输入带有md芯片的输入并且焦点被删除时,该条目仍然存在。 有没有办法在删除焦点后删除任何不是芯片的条目?移开焦点后,"站立文本"仍会显示

通常,您应该能够使用 ng-blur 来做到这一点,但由于某种原因,该指令在与 md-autocomplete 一起使用时存在问题:https://github.com/angular/material/issues/3906

但我试图以不同的方式解决它,不是最正确的方法,但它有效。您所要做的就是将事件与blur绑定在md-autocomplete内部的input。在这种情况下,您必须清除 md-自动完成的搜索文本。因此,只需以某种方式在控制器中绑定该事件,如下所示:

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

最新更新