Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用过滤器在Angularjs中执行搜索后清除列表?_Javascript_Angularjs_Filtering_Angularjs Filter - Fatal编程技术网

Javascript 使用过滤器在Angularjs中执行搜索后清除列表?

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

我刚开始玩ng,我必须说它太有趣了!我正在使用这个网站上的例子 特别是“使用角度js过滤数据”

我仿效了这个例子,效果很好。该示例显示列表,当您键入名称时,它将对其进行过滤并显示精确匹配

我不想停在那里玩得更多,我想做的是不显示任何列表,当用户键入列表时,列表就会显示出来。这是我的index.html:

<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是的,也可以。这看起来是一个干净的解决方案。