上一章我们实现了 Mark all as completed 选择框的相关操作。接下来,我们要实现的是另外一个需求: 很明显,计数器的值应该根据todoService.#todoList数组计算而来。那么,我们就在TodoService里面增加一个属性: 这里,我们使用了 TypeScript 的 getter 函数,返回#todoList中所有completed属性为false的待办事项的个数。 ...

0 个评论 0 次阅读

上一章我们完成了待办事项的增加、删除、修改、完成等操作。在开始下面的需求之前,我们要解决一个之前遗留的 bug。 bug 的触发方式是,首先添加若干待办事项,然后利用删除按钮全部删除,此时,不能再添加新的待办事项。输入之后,列表始终为空。 下面我们先看一下增加待办事项的操作: 我们看到,每次新增待办事项,其实是向this.todoService.todoList数组追加元素。这样没有问题,而且符合 ...

0 个评论 0 次阅读

类型是 TypeScript 的灵魂,很多时候我们需要种种新的类型。工具类型是 TypeScript 的一种特殊类型,为了解决某一特定的类型问题,得到一种新的类型。有的就是一种通用类型;有的则可以对现有类型进行一定的转换,从而得到一种新的类型。 TypeScript 内置了很多工具类型,熟练运用它们,可以让我们开发工作事半功倍。 下面我们将逐一介绍这些内置工具类型。 Record Record是一 ...

0 个评论 14 次阅读
Angular

上一章我们实现了待办事项 app 的基本功能,也就是回车添加新的待办。现在,我们要继续完善这个应用。 我们要求,在添加新的待办之后,输入框应该清空。我们当然可以直接通过input的引用,将其value属性设置为空来实现。这在 jQuery 时代是标准做法。但 Angular 应该是数据驱动的,更好的做法是,将input的值绑定到一个变量,通过对这个变量的操作,影响到input的行为。 下面我们在H ...

0 个评论 4 次阅读
Angular

上一章我们简单地把 TodoMVC 的组件进行了拆分。 TodoMVC 很明显是一个以数据为中心的应用:整个系统围绕着待办列表,界面上几乎所有操作都是针对待办列表进行一系列操作。因此,我们可以使用数组保存这个待办列表,将页面显示绑定到列表中的数据,通过修改数据实现页面显示的修改。这个数组应该是全局可用的,方便我们对其进行管理。虽然 JavaScript 提供了全局变量供我们使用,但本着能不用就不用 ...

0 个评论 1 次阅读
Angular

前面我们已经简单学习过 Angular 的一些核心内容,下面我们将完成一个演示项目,来看看在实际工程中,这些内容如何有机的整合在一起。 我们选择的是 TodoMVC。TodoMVC 是一个开源 JavaScript 项目框架。不同于一个项目或者一个开发库,TodoMVC 提供了一个应用程序的标准范本需求,要求使用各种不同的 MV* 框架实现这么一个 Todo 应用。 TodoMVC 是一个开源 J ...

0 个评论 3 次阅读
Angular

前面我们已经介绍过组件。我们说过,组件是 Angular 的核心概念之一。Angular 的一切都是围绕着组件构建的。Angular 将组件定义为一种展示手段:用户看到的就是组件。但是,对于一个完整的应用,仅有展示显然是不够的:我们还有一系列业务逻辑和与之相匹配的数据。Angular 建议,组件应该只是对数据的展示,不应该持有数据。数据和业务逻辑应该交给服务。 所谓服务 service,是一个典型 ...

0 个评论 3 次阅读
Angular

前面我们已经说过,Angular 的指令分为组件指令、结构指令和属性指令。我们已经详细介绍过 Angular 为我们内置的三种结构指令:ngIf、ngFor以及ngSwitch。但是,现实世界千变万化,区区几种内置指令不可能满足所有的需求。所以,Angular 也提供了自定义指令的方法。本章我们将介绍如何自定义指令。 自定义属性指令 虽然 Angular 提供了ngClass指令,将 CSS cl ...

1 个评论 4 次阅读
Angular

前面我们介绍了ngIf和ngFor,作为某种一一对应的关系,今天我们将介绍另外一个结构指令:ngSwitch。ngSwitch完全可以使用ngIf替代,只不过在某一条件具有多种情形的时候,ngSwitch会更加方便使用。ngSwitch允许根据定义好的条件显示一个或多个 DOM 元素。 ngSwitch实际包含了三个指令,下面展示了ngSwitch的基本语法: ngSwitch作用于contain ...

0 个评论 4 次阅读

关于我

devbean

devbean

豆子,生于山东,定居南京。毕业于山东大学软件工程专业。软件工程师,主要关注于 Qt、Angular 等界面技术。

主题 Salodad 由 PenciDesign 提供 | 静态文件存储由又拍云存储提供 | 苏ICP备13027999号-2