[Angular Tutorial] 3-Filtering Repeaters

在上一步中,我们花了很大功夫来布局应用的基础,所以我们现在做点简单点的吧!我们将会添加一个全文本搜索框(没错,这很简单)。

  ·我们的应用现在会有一个搜索框,注意页面中手机列表的改变取决于用户在搜索框键入的内容。

最重要的变化列举如下,当然,你也可以点击这里在GitHub上查看全部的不同。

控制器

我们对控制器不做任何修改。

模板

app/index.html:

<div class="container-fluid">
  <div class="row">
    <div class="col-md-2">
      <!--Sidebar content-->

      Search: <input ng-model="query">

    </div>
    <div class="col-md-10">
      <!--Body content-->

      <ul class="phones">
        <li ng-repeat="phone in phones | filter:query">
          {{phone.name}}
          <p>{{phone.snippet}}</p>
        </li>
      </ul>

    </div>
  </div>
</div>

我们添加了标准的HTML<input>标签并且使用Angular的过滤器函数来为ngRepeat指令处理输入的内容。

这可以使用户在电话列表中输入搜索条件并且可以及时看到搜索结果,新的代码展示了:

  ·数据绑定,这是Angular的核心特性之一。当页面加载时,Angular将输入框的名字和数据模型中有相同名字的变量绑定到一起,并且保持二者的同步。

  在这段代码中,用户在输入框中输入的数据(叫做query)可以立即作为一个列表迭代器(phone in phones | filter:query)中的过滤器。当数据模型的改变导致了迭代器输入的改变时,迭代器会高效地更新DOM来反映当前数据模型的状态。

  ·filter过滤器的使用:filter函数使用query的值来创建一个只包含那些匹配query的值得电话列表。

  ·通过filter过滤器返回的改变的电话数目,ngRepeat自动更新视图,这个过程对于开发者来说是完全透明的。

总结

我们已经添加了全文搜索,让我们进入下一步来学习如何为电话应用添加排序功能吧!

时间: 2024-08-24 18:32:09

[Angular Tutorial] 3-Filtering Repeaters的相关文章

[Angular Tutorial]Turorial

(注:我曾经在<不敢止步>一书中看到,作者认为学习一门技术最好的方法就是翻译某部领域书籍,我决定做一次尝试,接下来花1个月左右时间,将Angular Tutorial中的Phonecat范例全部翻译一遍,这当然更多是希望自己能得到一个提高,尽力做到最好,当然质量难以保证,所有专有名词尽量不译,所有章节与https://docs.angularjs.org/tutorial/对应,如果可以,希望您能对照两边学习,给我提些意见.那么,开始吧!) 本节翻译自:https://docs.angular

[Angular Tutorial] 0-Bootstraping

在这一节的tutorial中,您将会逐渐熟悉AngularJS phonecat app的最重要的源代码文件.您也将学到如何将开发服务器与angular-seed绑定到一起,并且在浏览器中运行应用. 在您继续之前,请确保您已经搭建好您的开发环境并且安装了所有必要的依赖,像这里描述的那样. 在angular-phonecat目录下,运行这条指令: git checkout -f step-0 这将使您工作空间的tutorial app重置到step 0.(注:强烈推荐使用sourcetree,可以

[Angular Tutorial] 3-Components

在先前的步骤中,我们看到了一个控制器和一个模板如何一起工作来将一个静态的HTML文件转化为动态页面(view).一般说来,这在单页应用中一种非常常见的模式(在Angular应用中尤其是这样): ·客户端代码“掌管”并和视图层实现了动态交互,通过在数据模型和状态中即刻更新视图来反应改变,这经常是用户交互的结果(我们不久将在第5步中看到一个例子),这种做法取代了在服务端创建一个静态HTML页面的做法. 模板(视图层包含绑定和展示逻辑的部分)作为一个蓝图,以此来决定我们数据怎么组织和展示给用户.而控制

[Angular Tutorial] 8 - Templating Links &amp; Images

在这一步中,我们将会在电话列表中为电话添加略图,并附上链接,当然现在也不会链接去哪.在随后的步骤中,我们将使用这些链接来展示电话列表中额外的信息. ·现在电话列表中会有链接和图片. 最重要的不同在下面列出.您可以点击这里在GitHub上查看全部的不同. 数据 注意到phones.json文件中包含了每一部电话的唯一ID和图片URLs.这些URLs指向app/img/phones/目录. app/phones/phones.json (样本代码片段): [ { ... "id": &qu

[Angular Tutorial] 13 -REST and Custom Services

在这一步中,我们将会改变我们获取数据的方式. ·我们定义一个代表RESTful客户端的自定义服务.使用这个客户端,我们可以用一种更简单的方法向服务端请求数据,而不用处理更底层的$httpAPI,HTTP方法和URLs. 最重要的变化列举如下,您可以点击这里在GitHub上查看全部的不同. 依赖 RESTful功能由Angular的ngResource模块提供,这是从Angular核心模块中独立出来的. 由于我们使用了Bower来安装客户端的依赖,这一步更新bower.json配置文件来添加新的依

[Angular Tutorial] 4 - Directory and File Organization

在这一步中,我们将不会在我们的应用中添加任何新功能,相反,我们打算退回一步,重构我们的代码库,移动我们的代码和文件,以此来使我们的应用更具易扩展性和可维护性. 在先前的步骤中,我们已经见识到了如何将我们的应用构建得更具模块性和可测试性.另一种同样重要的思想是,用一种使得查看代码变得容易(无论对我们还是团队中的其他开发者)和能在我们应用中快速指定的某区域的相关代码块的方式来组织我们的代码库. 为此,下面我们将解释为何及如何: ·将每一个实体置于他们自己的文件中(own file). ·通过特定区域

[Angular Tutorial] 10 -More Templating

在这一步中,我们会实现电话细节的视图,这在用户点击列表中的一部电话时被展示. ·当您点击列表中的一部电话时,带有电话特定信息的电话细节页面将被展示. 我们打算使用$http来获取我们的数据,以此来实现电话细节视图,然后刷新phoneDetail组件模板. 最大的不同列举如下,您也可以点击这里从GitHub上看到全部不同. 数据 除了phones.json,app/phones/目录中也包含了每一步电话的JSON文件: app/phones/nexus-s.json: (样本片段) { "addi

[Angular Tutorial] 14 -Animations

在这一步中,我们将会通过在我们先前创建的模板代码中添加CSS和JavaScript动画效果来扩展我们的web应用. ·我们现在使用ngAnimate模块来允许动画效果贯穿整个应用. ·我们也依赖于自带的指令来自动触发动画来进行开发. ·当一个动画效果被发现时,在给定的时间内,它将会和置于元素中的实际DOM操作一同运行(比如:在ngRepeat中插入/删除节点或在ngClass中添加/删除类). 最大的不同列举如下,您可以点击这里在GitHub上查看全部的不同. CSS过渡动画:使ngRepeat

[Angular Tutorial] 12 -Event Handlers

在这一步中,您将会在电话细节页面添加一个可点击的电话图片转换器. ·电话细节页面展示了当前电话的一张大图片和几张相对较小的略图.如果我们能仅仅通过点击略图就能把大图片换成略图就好了.让我们看看用Angular如何实现它. 最大的不同列举如下,您可以点击这里在GitHub上查看全部的不同. 组件控制器 app/phone-detail/phone-detail.component.js: ... controller: ['$http', '$routeParams', function Phon