【问题标题】:md-chips and md-autocomplete input fieldmd-chips 和 md-autocomplete 输入字段
【发布时间】:2017-01-06 16:00:54
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

    但我试图以不同的方式解决它,不是最正确的方法,但它确实有效。您需要做的是在input 中的md-autocomplete 中使用blur 绑定事件。在这种情况下,您必须清除 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);
        }
    )
    

    我之所以使用 timeout 是因为如果 searchText 变量被清除得太快,则没有添加芯片。但是当我添加 300 毫秒延迟时,它按我的预期工作。当然有更好的方法可以做到,但只要尝试这样做,也许对你来说就足够了。

    这里是工作代码笔:http://codepen.io/anon/pen/QdNydx

    【讨论】:

    • 感谢 Patryk 的回复。它似乎不起作用。该函数永远不会在我的控制器中被调用。我想这可能是因为我使用的是控制器作为语法。 vm = 这个;所以当我用我的 vm.searchText 替换 ctrl.searchText 它似乎没有任何效果
    • 尝试在您的浏览器控制台中进行试验。尝试使用 `angular.element(document.querySelector('md-autocomplete')).scope()` 并检查哪个变量是您的控制器,并确保您有正确的搜索文本变量
    • 而且,如果你附上你的代码,它会更容易帮助你:) plunkr、codepen 或 jsfiddle 会更有帮助
    • 我已附在原帖中
    • 如果您在输入“angular.element(document.querySelector('md-autocomplete')).scope().containerVisibility.searchLoadId”后可以在浏览器控制台中看到正确的值,那么我不会知道如何帮助你:(这是我认为可能有问题的唯一地方......特别是“containerVisibility”看起来很奇怪,但我相信你检查过它。或者尝试创建 plunker、jsfiddler 或其他东西像那个问题一样吗?仅阅读您的代码,我没有发现任何问题...
    猜你喜欢
    • 1970-01-01
    • 2017-08-11
    • 1970-01-01
    • 1970-01-01
    • 2017-04-16
    • 2017-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多