Javascript 使用过滤器在Angularjs中执行搜索后清除列表?
我刚开始玩ng,我必须说它太有趣了!我正在使用这个网站上的例子 特别是“使用角度js过滤数据” 我仿效了这个例子,效果很好。该示例显示列表,当您键入名称时,它将对其进行过滤并显示精确匹配 我不想停在那里玩得更多,我想做的是不显示任何列表,当用户键入列表时,列表就会显示出来。这是我的index.html:Javascript 使用过滤器在Angularjs中执行搜索后清除列表?,javascript,angularjs,filtering,angularjs-filter,Javascript,Angularjs,Filtering,Angularjs Filter,我刚开始玩ng,我必须说它太有趣了!我正在使用这个网站上的例子 特别是“使用角度js过滤数据” 我仿效了这个例子,效果很好。该示例显示列表,当您键入名称时,它将对其进行过滤并显示精确匹配 我不想停在那里玩得更多,我想做的是不显示任何列表,当用户键入列表时,列表就会显示出来。这是我的index.html: <div id='content' ng-app='MyTutorialApp' ng-controller='MainController'> <input type
<div id='content' ng-app='MyTutorialApp' ng-controller='MainController'>
<input type='text' ng-init='searchText=" "' ng-model='searchText' />
<ul>
<li ng-repeat='person in people | filter:searchText'>#{{person.id}} {{person.name}}</li>
</ul>
</div>
- {{person.id}{{person.name}
正如您所看到的,我正在对searchText变量执行ng init,当我最初打开页面时,它可以正常工作,即没有列表。但是,当我键入一个名称时,即使我清除了输入框,过滤完成后列表仍会保留在那里。当我清除输入框时,如何使列表消失
我需要某种自定义过滤器吗
如果我使用了不正确的术语,请原谅我对ng的无知,并请告诉我正确的术语:)您可以根据特定条件使用ng show/ng hide来显示/隐藏列表,正如您当前希望在searchText上显示/隐藏列表一样
<ul ng-show="searchText !==''">
<li ng-repeat='person in people | filter:searchText'>#{{person.id}} {{person.name}}</li>
</ul>
- {{person.id}{{person.name}
这只是另一个实现你想要的想法:
<input type="text" ng-model="searchText" />
<ul>
<li ng-repeat="person in people | filter:(searchText || ' ')">#{{person.id}} {{person.name}}</li>
</ul>
- {{{person.id}{{person.name}
或者,如果要在输入框为空时按某个默认值进行过滤:
<li ng-repeat="person in people | filter:(searchText || 'John')">#{{person.id}} {{person.name}}</li>
{{person.id}{{{person.name}
您可以将ul
包装在一个div中,如果或ng show
或ng clope
指令为空,则可以使用ng显示或隐藏列表string@javaCity或者只在ul
元素本身上使用这些指令。@runTram是的,也可以。这看起来是一个干净的解决方案。