【发布时间】:2014-07-22 00:07:21
【问题描述】:
我是 AngularJS 的菜鸟。作为一项学习练习,我正在创建一个预先输入控件。
预输入由一个用于过滤选项的文本框、一个用于显示候选选项菜单的无序列表和一个用于手动切换列表的显示/隐藏按钮组成。
文本框使用 ng-repeat 过滤 li 元素。从列表中选择一个 li 项目时,我会使用所选值填充文本框,然后隐藏列表。
<div class="xtab-typeahead" ng-controller="xTabTypeAheadCtrl">
<input type="text" class="xtab-typeahead-search" placeholder="{{type}}" ng-model="query.id" ng-focus="showMenu()" ng-init="query.id = undefined" />
<button ng-click="toggleMenu()">Show/Hide</button>
<ul class="xtab-typeahead-menu" ng-class="{true:'active',false:''}[isActive]">
<li ng-repeat="item in menuItems | filter:query"
ng-click="hideMenu(); query.id = item.id">
{{item.id}}
</li>
</ul>
</div>
我的问题是,当将值分配给文本框时,在隐藏菜单之前,列表会暂时过滤为选择的一个选项(因为文本框也是 ng-repeat 过滤器的来源)。我希望隐藏菜单的 id 而不先用过滤器刷新。
应该注意,这只发生在使用我用来淡出菜单的 CSS 过渡时。
这里有一个plnkr 来说明。
【问题讨论】:
标签: angularjs angularjs-ng-repeat