2016-02-05 23:27:06 -08:00
include ../_util-fns
2016-01-27 14:49:02 -08:00
a(id="top")
:marked
2017-01-26 03:26:11 -08:00
_Angular_ is the name for the Angular of today and tomorrow.
_AngularJS_ is the name for all v1.x versions of Angular.
This guide helps you transition from AngularJS to Angular
by mapping AngularJS syntax to the equivalent Angular syntax.
2016-01-27 14:49:02 -08:00
2017-02-26 17:12:55 +08:00
在AngularJS和Angular之间, 有很多不同的概念和语法。
本章提供了一个快速的参考指南, 指出一些常用的AngularJS语法及其在Angular中的等价物。
2016-06-01 18:34:02 +08:00
2016-01-27 14:49:02 -08:00
:marked
2017-01-26 03:26:11 -08:00
**See the Angular syntax in this <live-example name="cb-ajs-quick-reference"></live-example>**.
2016-01-27 14:49:02 -08:00
2017-04-23 09:34:51 +08:00
**可到<live-example name="cb-ajs-quick-reference"></live-example>中查看Angular语法**。
2016-06-01 18:34:02 +08:00
2016-01-27 14:49:02 -08:00
## Contents
2017-04-15 15:34:47 +08:00
内容
2017-02-23 16:27:14 -05:00
* [Template basics](#template-basics)—binding and local variables.
2016-06-01 18:34:02 +08:00
2017-04-15 16:47:27 +08:00
[模板基础](#template-basics) - 绑定变量与局部变量。
2016-06-01 21:32:28 +08:00
2017-02-23 16:27:14 -05:00
* [Template directives](#template-directives)—built-in directives `ngIf` and `ngClass`.
2016-06-01 18:34:02 +08:00
2017-04-15 16:47:27 +08:00
[模板指令](#template-directives) - 内置指令`ngIf`和`ngClass`。
2016-06-01 21:32:28 +08:00
2017-02-23 16:27:14 -05:00
* [Filters/pipes](#filters-pipes)—built-in *filters*, known as *pipes* in Angular.
2016-06-01 18:34:02 +08:00
2017-04-15 16:47:27 +08:00
[过滤器/管道](#filters-pipes) - 内置*过滤器(filter)*, 在Angular中叫*管道(pipe)*。
2016-06-01 21:32:28 +08:00
2017-02-23 16:27:14 -05:00
* [Modules/controllers/components](#controllers-components)—*modules* in Angular are slightly different from *modules* in AngularJS, and *controllers* are *components* in Angular.
2017-04-15 16:47:27 +08:00
[模块/控制器/组件](#controllers-components) - Angular 中的*模块*和AngularJS 中的略有不同;而*控制器*在Angular 中叫组件。
2017-02-23 16:27:14 -05:00
* [Style sheets](#style-sheets)—more options for CSS than in AngularJS.
2016-06-01 18:34:02 +08:00
2017-02-26 21:44:00 +08:00
[样式表](#style-sheets) - Angular 相对AngularJS 在 CSS 方面有了更多选项。
2016-06-01 21:32:28 +08:00
2016-01-27 14:49:02 -08:00
.l-main-section
:marked
2016-09-13 17:56:29 -04:00
## Template basics
2016-06-01 21:32:28 +08:00
## 模板基础
2016-01-27 14:49:02 -08:00
Templates are the user-facing part of an Angular application and are written in HTML.
2017-01-26 03:26:11 -08:00
The following table lists some of the key AngularJS template features with their equivalent Angular template syntax.
2016-01-27 14:49:02 -08:00
2017-02-26 17:12:55 +08:00
模板是Angular应用中的门面部分, 它是用HTML写的。下表中是一些AngularJS中的关键模板特性及其在Angular中的等价语法。
2016-06-01 21:32:28 +08:00
2016-01-27 14:49:02 -08:00
- var top="vertical-align:top"
table(width="100%")
col(width="50%")
2016-06-01 18:34:02 +08:00
col(width="50%")
2016-01-27 14:49:02 -08:00
tr
2017-01-26 03:26:11 -08:00
th AngularJS
th Angular
2016-01-27 14:49:02 -08:00
tr(style=top)
td
:marked
2016-09-13 17:56:29 -04:00
### Bindings/interpolation
2016-06-01 21:32:28 +08:00
### 绑定/插值表达式
2016-01-27 14:49:02 -08:00
code-example.
Your favorite hero is: {{vm.favoriteHero}}
:marked
2017-01-26 03:26:11 -08:00
In AngularJS, an expression in curly braces denotes one-way binding.
2016-01-27 14:49:02 -08:00
This binds the value of the element to a property in the controller
associated with this template.
2016-06-01 18:34:02 +08:00
2017-02-26 17:12:55 +08:00
在AngularJS中, 花括号中的表达式代表单向绑定。
2016-06-01 21:32:28 +08:00
它把元素的值绑定到了与模板相关控制器的属性上。
2016-01-27 14:49:02 -08:00
When using the `controller as` syntax,
2016-09-13 17:56:29 -04:00
the binding is prefixed with the controller alias (`vm` or `$ctrl`) because you
2016-01-27 14:49:02 -08:00
have to be specific about the source of the binding.
2016-06-01 21:32:28 +08:00
当使用`controller as`语法时,该绑定需要用控制器的别名(`vm`)为前缀,这是因为我们不得不通过它来指定绑定源。
2016-01-27 14:49:02 -08:00
td
:marked
2016-09-13 17:56:29 -04:00
### Bindings/interpolation
2016-06-01 21:32:28 +08:00
### 绑定/插值表达式
2017-02-02 18:38:17 +00:00
+makeExample('cb-ajs-quick-reference/ts/src/app/movie-list.component.html', 'interpolation')(format="." )
2016-01-27 14:49:02 -08:00
:marked
2017-01-26 03:26:11 -08:00
In Angular, a template expression in curly braces still denotes one-way binding.
2016-01-27 14:49:02 -08:00
This binds the value of the element to a property of the component.
The context of the binding is implied and is always the
associated component, so it needs no reference variable.
2016-06-01 18:34:02 +08:00
2017-02-26 17:12:55 +08:00
在Angular中, 花括号中的模板表达式同样代表单向绑定。
2016-06-01 21:32:28 +08:00
它把元素的值绑定到了组件的属性上。
它绑定的上下文变量是隐式的,并且总是关联到组件。
所以,它不需要一个引用变量。
2017-02-23 16:27:14 -05:00
For more information, see the [Interpolation](../guide/template-syntax.html#interpolation)
section of the [Template Syntax](../guide/template-syntax.html) page.
2016-06-01 21:32:28 +08:00
2017-04-15 16:47:27 +08:00
要了解更多,请参见[模板语法](../guide/template-syntax.html)中的[插值表达式](../guide/template-syntax.html#interpolation)部分。
2017-04-15 17:09:42 +08:00
2016-01-27 14:49:02 -08:00
tr(style=top)
td
:marked
### Filters
2016-06-01 21:32:28 +08:00
### 过滤器
2016-01-27 14:49:02 -08:00
code-example.
<td>{{movie.title | uppercase}}</td>
:marked
2017-01-26 03:26:11 -08:00
To filter output in AngularJS templates, use the pipe character (|) and one or more filters.
2016-06-01 18:34:02 +08:00
2017-02-26 17:12:55 +08:00
要在AngularJS中过滤输出, 使用管道字符(|)以及一个或多个过滤器。
2016-06-01 21:32:28 +08:00
2016-09-13 17:56:29 -04:00
This example filters the `title` property to uppercase.
2016-06-01 21:32:28 +08:00
在这个例子中,我们把`title`属性过滤成了大写形式。
2016-01-27 14:49:02 -08:00
td
:marked
### Pipes
2016-06-01 21:32:28 +08:00
### 管道
2017-02-02 18:38:17 +00:00
+makeExample('cb-ajs-quick-reference/ts/src/app/app.component.html', 'uppercase')(format="." )
2016-01-27 14:49:02 -08:00
:marked
2017-01-26 03:26:11 -08:00
In Angular you use similar syntax with the pipe (|) character to filter output, but now you call them **pipes**.
Many (but not all) of the built-in filters from AngularJS are
built-in pipes in Angular.
2016-06-01 18:34:02 +08:00
2017-02-26 17:12:55 +08:00
在Angular中, 我们使用相似的语法 —— 用管道字符(|)来过滤输出,但是现在直接把它叫做**管道**了。
很多(但不是所有)AngularJS中的内置过滤器也成了Angular中的内置管道。
2016-06-01 21:32:28 +08:00
2017-02-23 16:27:14 -05:00
For more information, see [Filters/pipes](#filters-pipes) below.
2016-06-01 21:32:28 +08:00
2016-11-22 20:07:16 +08:00
请参见下面[过滤器/管道](#filters-pipes)了解更多信息。
2016-01-27 14:49:02 -08:00
tr(style=top)
td
:marked
### Local variables
2016-06-01 21:32:28 +08:00
### 局部变量
2016-01-27 14:49:02 -08:00
code-example(format="").
<tr ng-repeat="movie in vm.movies">
<td>{{movie.title}}</td>
</tr>
:marked
Here, `movie` is a user-defined local variable.
2016-06-01 21:32:28 +08:00
这里的`movie`是一个用户定义的局部变量
2016-01-27 14:49:02 -08:00
td
:marked
2016-04-30 07:01:16 -07:00
### Input variables
2016-06-01 21:32:28 +08:00
### 输入变量
2017-02-02 18:38:17 +00:00
+makeExample('cb-ajs-quick-reference/ts/src/app/app.component.html', 'local')(format="." )
2016-01-27 14:49:02 -08:00
:marked
2017-01-26 03:26:11 -08:00
Angular has true template input variables that are explicitly defined using the `let` keyword.
2016-06-01 18:34:02 +08:00
2017-02-26 17:12:55 +08:00
在Angular中, 我们有了真正的模板输入变量, 它需要使用`let`关键字进行明确定义。
2016-06-01 21:32:28 +08:00
2017-02-23 16:27:14 -05:00
For more information, see the [ngFor micro-syntax](../guide/template-syntax.html#microsyntax)
section of the [Template Syntax](../guide/template-syntax.html) page.
2016-06-01 21:32:28 +08:00
2017-04-15 21:30:38 +08:00
要了解更多信息,请参见[模板语法](../guide/template-syntax.html)中的[ngFor微语法](../guide/template-syntax.html#microsyntax)部分。
2016-01-27 14:49:02 -08:00
:marked
[Back to top](#top)
2016-06-01 18:34:02 +08:00
2016-06-01 21:32:28 +08:00
[返回顶部](#top)
2016-01-27 14:49:02 -08:00
.l-main-section
:marked
2016-09-13 17:56:29 -04:00
## Template directives
2017-02-26 15:04:21 +08:00
2016-06-01 21:32:28 +08:00
## 模板指令
2017-02-26 15:04:21 +08:00
2017-01-26 03:26:11 -08:00
AngularJS provides more than seventy built-in directives for templates.
Many of them aren't needed in Angular because of its more capable and expressive binding system.
The following are some of the key AngularJS built-in directives and their equivalents in Angular.
2016-06-01 21:32:28 +08:00
2017-02-26 15:04:21 +08:00
AngularJS 为模板提供了七十多个内置指令。
在 Angular 中,它们很多都已经不需要了,因为 Angular 有了一个更加强大、快捷的绑定系统。
下面是一些AngularJS 中的关键指令及其在 Angular 中的等价物。
2016-06-01 21:32:28 +08:00
2016-01-27 14:49:02 -08:00
table(width="100%")
col(width="50%")
2016-06-01 18:34:02 +08:00
col(width="50%")
2016-01-27 14:49:02 -08:00
tr
2017-01-26 03:26:11 -08:00
th AngularJS
th Angular
2016-01-27 14:49:02 -08:00
tr(style=top)
td
:marked
### ng-app
code-example.
2016-06-01 18:34:02 +08:00
<body ng-app="movieHunter">
2016-01-27 14:49:02 -08:00
:marked
The application startup process is called **bootstrapping**.
2016-06-01 18:34:02 +08:00
2016-06-01 21:32:28 +08:00
应用的启动过程被称为**引导**。
2017-01-26 03:26:11 -08:00
Although you can bootstrap an AngularJS app in code,
2016-01-27 14:49:02 -08:00
many applications bootstrap declaratively with the `ng-app` directive,
giving it the name of the application's module (`movieHunter`).
2016-06-01 21:32:28 +08:00
2017-02-26 15:04:21 +08:00
虽然可以从代码中引导Angular应用,
2016-06-01 21:32:28 +08:00
但很多应用都是通过`ng-app`指令进行声明式引导的,只要给它一个应用模块的名字(`movieHunter`)就可以了。
2016-01-27 14:49:02 -08:00
td
:marked
### Bootstrapping
2016-11-22 20:07:16 +08:00
2016-06-01 21:32:28 +08:00
### 引导
2016-11-22 20:07:16 +08:00
2017-02-02 18:38:17 +00:00
+makeExample('cb-ajs-quick-reference/ts/src/main.ts','','main.ts')(format="." )
2016-08-09 17:38:25 +01:00
<br>
2017-02-02 18:38:17 +00:00
+makeExample('cb-ajs-quick-reference/ts/src/app/app.module.1.ts','','app.module.ts')(format="." )
2016-06-01 21:32:28 +08:00
2016-01-27 14:49:02 -08:00
:marked
2017-01-26 03:26:11 -08:00
Angular doesn't have a bootstrap directive.
2016-09-13 17:56:29 -04:00
To launch the app in code, explicitly bootstrap the application's root module (`AppModule`)
2016-08-09 17:38:25 +01:00
in `main.ts`
and the application's root component (`AppComponent`) in `app.module.ts`.
2016-06-01 18:34:02 +08:00
2017-02-26 15:04:21 +08:00
Angular 没有引导指令。
2016-08-12 07:57:51 +08:00
我们总是通过显式调用一个`bootstrap`函数,并传入应用模块的名字(`AppComponent`)来启动应用。
2016-06-01 21:32:28 +08:00
2016-11-26 21:43:16 +00:00
For more information see the [Setup](../guide/setup.html) page.
2016-06-01 21:32:28 +08:00
2016-11-27 10:38:15 +00:00
要了解更多,参见[搭建本地开发环境](../guide/setup.html)。
2016-01-27 14:49:02 -08:00
tr(style=top)
td
:marked
### ng-class
code-example(format="").
<div ng-class="{active: isActive}">
2016-06-01 18:34:02 +08:00
<div ng-class="{active: isActive,
2016-01-27 14:49:02 -08:00
shazam: isImportant}">
:marked
2017-01-26 03:26:11 -08:00
In AngularJS, the `ng-class` directive includes/excludes CSS classes
2016-01-27 14:49:02 -08:00
based on an expression. That expression is often a key-value control object with each
key of the object defined as a CSS class name, and each value defined as a template expression
that evaluates to a Boolean value.
2016-06-01 18:34:02 +08:00
2017-02-26 17:12:55 +08:00
在AngularJS中, `ng-class`指令会基于一个表达式来包含/排除某些CSS类。该表达式通常是一个“键-值”型的控制对象,
2016-06-01 21:32:28 +08:00
对象中的每一个键代表一个CSS类名, 每一个值定义为一个返回布尔值的模板表达式。
2016-01-27 14:49:02 -08:00
In the first example, the `active` class is applied to the element if `isActive` is true.
2016-06-01 18:34:02 +08:00
2016-06-01 21:32:28 +08:00
在第一个例子中,当`isActive`为真时,`active`类会被应用到元素上。
2016-09-13 17:56:29 -04:00
You can specify multiple classes, as shown in the second example.
2016-06-01 21:32:28 +08:00
2016-06-20 10:59:00 +01:00
就像第二个例子中展示的, 可以指定多个CSS类。
2016-06-01 21:32:28 +08:00
2016-01-27 14:49:02 -08:00
td
:marked
### ngClass
2017-02-02 18:38:17 +00:00
+makeExample('cb-ajs-quick-reference/ts/src/app/app.component.html', 'ngClass')(format="." )
2016-01-27 14:49:02 -08:00
:marked
2017-01-26 03:26:11 -08:00
In Angular, the `ngClass` directive works similarly.
2016-06-01 18:34:02 +08:00
It includes/excludes CSS classes based on an expression.
2017-02-26 17:12:55 +08:00
在Angular中, `ngClass`指令用类似的方式工作。
2016-06-01 21:32:28 +08:00
它根据一个表达式包含/排除某些CSS类。
2016-01-27 14:49:02 -08:00
In the first example, the `active` class is applied to the element if `isActive` is true.
2016-06-01 18:34:02 +08:00
2016-06-01 21:32:28 +08:00
在第一个例子中,如果`isActive`为真,则`active`类被应用到那个元素上。
2016-09-13 17:56:29 -04:00
You can specify multiple classes, as shown in the second example.
2016-06-01 18:34:02 +08:00
2016-06-20 10:59:00 +01:00
就像第二个例子中所展示的那样,可以同时指定多个类。
2016-06-01 21:32:28 +08:00
2017-01-26 03:26:11 -08:00
Angular also has **class binding**, which is a good way to add or remove a single class,
2016-01-27 14:49:02 -08:00
as shown in the third example.
2016-06-01 18:34:02 +08:00
2017-02-26 15:04:21 +08:00
Angular还有**类绑定**,它是单独添加或移除一个类的好办法 —— 就像第三个例子中展示的。
2016-06-01 21:32:28 +08:00
2017-02-23 16:27:14 -05:00
For more information see the [Attribute, class, and style bindings](../guide/template-syntax.html#other-bindings)
section of the [Template Syntax](../guide/template-syntax.html) page.
2016-01-27 14:49:02 -08:00
2017-04-15 16:47:27 +08:00
要了解更多信息,参见[模板语法](../guide/template-syntax.html)中的[属性、CSS类和样式绑定](../guide/template-syntax.html#other-bindings)部分。
2016-06-01 21:32:28 +08:00
2016-01-27 14:49:02 -08:00
tr(style=top)
td
:marked
### ng-click
code-example(format="").
<button ng-click="vm.toggleImage()">
<button ng-click="vm.toggleImage($event)">
:marked
2017-01-26 03:26:11 -08:00
In AngularJS, the `ng-click` directive allows you to specify custom behavior when an element is clicked.
2016-06-01 18:34:02 +08:00
2017-02-26 17:12:55 +08:00
在AngularJS中, `ng-click`指令指定当元素被点击时的自定义行为。
2016-06-01 21:32:28 +08:00
2016-11-22 20:07:16 +08:00
In the first example, when the user clicks the button, the `toggleImage()` method in the controller referenced by the `vm` `controller as` alias is executed.
2016-06-01 18:34:02 +08:00
2016-09-15 15:23:48 +08:00
在第一个例子中,如果用户点击了这个按钮,那么控制器的`toggleImage()`方法就会被执行,这个控制器是被`controller as`中指定的`vm`别名所引用的。
2016-06-01 21:32:28 +08:00
2016-01-27 14:49:02 -08:00
The second example demonstrates passing in the `$event` object, which provides details about the event
to the controller.
2016-06-01 21:32:28 +08:00
第二个例子演示了传入`$event`对象,它提供了事件的详情,并被传到控制器。
2016-01-27 14:49:02 -08:00
td
:marked
2017-02-23 16:27:14 -05:00
### Bind to the `click` event
2016-06-01 21:32:28 +08:00
### 绑定到`click`事件
2017-04-15 16:47:27 +08:00
2017-02-02 18:38:17 +00:00
+makeExample('cb-ajs-quick-reference/ts/src/app/app.component.html', 'event-binding')(format="." )
2017-04-15 17:09:42 +08:00
2016-01-27 14:49:02 -08:00
:marked
2017-01-26 03:26:11 -08:00
AngularJS event-based directives do not exist in Angular.
2016-09-13 17:56:29 -04:00
Rather, define one-way binding from the template view to the component using **event binding**.
2016-06-01 18:34:02 +08:00
2017-02-26 17:12:55 +08:00
AngularJS基于事件的指令在Angular中已经不存在了。
2016-06-20 10:59:00 +01:00
不过,可以使用**事件绑定**来定义从模板视图到组件的单向数据绑定。
2016-06-01 21:32:28 +08:00
2016-09-13 17:56:29 -04:00
For event binding, define the name of the target event within parenthesis and
2017-01-26 03:26:11 -08:00
specify a template statement, in quotes, to the right of the equals. Angular then
2016-01-27 14:49:02 -08:00
sets up an event handler for the target event. When the event is raised, the handler
executes the template statement.
2016-06-01 18:34:02 +08:00
2016-06-20 10:59:00 +01:00
要使用事件绑定,把目标事件的名字放在圆括号中,并且使用等号右侧引号中的模板语句对它赋值。
2017-02-26 17:12:55 +08:00
然后Angular为这个目标时间设置事件处理器。当事件被触发时, 这个处理器就会执行模板语句。
2016-06-01 21:32:28 +08:00
2016-09-13 17:56:29 -04:00
In the first example, when a user clicks the button, the `toggleImage()` method in the associated component is executed.
2016-06-01 18:34:02 +08:00
2016-09-15 15:23:48 +08:00
在第一个例子中,当用户点击此按钮时,相关组件中的`toggleImage()`方法就被执行了。
2016-06-01 21:32:28 +08:00
2016-01-27 14:49:02 -08:00
The second example demonstrates passing in the `$event` object, which provides details about the event
to the component.
2016-06-01 18:34:02 +08:00
2016-06-01 21:32:28 +08:00
第二个例子演示了如何传入`$event`对象,它为组件提供了此事件的详情。
2016-01-27 14:49:02 -08:00
For a list of DOM events, see: https://developer.mozilla.org/en-US/docs/Web/Events.
2016-06-01 18:34:02 +08:00
2016-06-08 17:02:41 +01:00
要查看DOM事件的列表, 请参见[网络事件](https://developer.mozilla.org/en-US/docs/Web/Events)。
2016-06-01 21:32:28 +08:00
2017-02-23 16:27:14 -05:00
For more information, see the [Event binding](../guide/template-syntax.html#event-binding)
section of the [Template Syntax](../guide/template-syntax.html) page.
2016-11-22 20:07:16 +08:00
2017-04-15 16:47:27 +08:00
要了解更多,请参见[模板语法](../guide/template-syntax.html)中的[事件绑定](../guide/template-syntax.html#event-binding)部分。
2016-06-01 21:32:28 +08:00
2016-01-27 14:49:02 -08:00
tr(style=top)
td
:marked
### ng-controller
code-example(format="").
<div ng-controller="MovieListCtrl as vm">
:marked
2017-01-26 03:26:11 -08:00
In AngularJS, the `ng-controller` directive attaches a controller to the view.
2016-01-27 14:49:02 -08:00
Using the `ng-controller` (or defining the controller as part of the routing) ties the
2016-06-01 18:34:02 +08:00
view to the controller code associated with that view.
2016-06-01 21:32:28 +08:00
2017-02-26 17:12:55 +08:00
在AngularJS中, `ng-controller`指令把控制器附加到视图上。
2016-06-01 21:32:28 +08:00
使用`ng-controller`(或把控制器定义为路由的一部分)把视图及其控制器的代码联系在一起。
2016-01-27 14:49:02 -08:00
td
:marked
### Component decorator
2016-06-01 21:32:28 +08:00
### Component装饰器
2017-02-02 18:38:17 +00:00
+makeExample('cb-ajs-quick-reference/ts/src/app/movie-list.component.ts', 'component')(format="." )
2016-01-27 14:49:02 -08:00
:marked
2017-01-26 03:26:11 -08:00
In Angular, the template no longer specifies its associated controller.
2016-01-27 14:49:02 -08:00
Rather, the component specifies its associated template as part of the component class decorator.
2016-06-01 18:34:02 +08:00
2017-02-26 17:12:55 +08:00
在Angular中, 模板不用再指定它相关的控制器。
2016-06-01 21:32:28 +08:00
反过来,组件会在组件类的装饰器中指定与它相关的模板。
2016-11-22 20:07:16 +08:00
For more information, see [Architecture Overview](../guide/architecture.html#component).
2016-01-27 14:49:02 -08:00
2016-11-22 20:07:16 +08:00
要了解更多,请参见[架构概览](../guide/architecture.html#component)。
2016-06-01 21:32:28 +08:00
2016-01-27 14:49:02 -08:00
tr(style=top)
td
:marked
### ng-hide
2017-01-26 03:26:11 -08:00
In AngularJS, the `ng-hide` directive shows or hides the associated HTML element based on
2016-09-13 17:56:29 -04:00
an expression. For more information, see [ng-show](#ng-show).
2016-11-22 20:07:16 +08:00
2017-02-26 17:12:55 +08:00
在AngularJS中, `ng-hide`指令会基于一个表达式显示或隐藏相关的HTML元素。
2016-06-01 21:32:28 +08:00
参见[ng-show](#ng-show)了解更多。
2016-01-27 14:49:02 -08:00
td
:marked
2017-02-23 16:27:14 -05:00
### Bind to the `hidden` property
2016-06-01 21:32:28 +08:00
### 绑定`hidden`属性
2017-04-15 16:47:27 +08:00
2017-01-26 03:26:11 -08:00
In Angular, you use property binding; there is no built-in *hide* directive.
2016-09-13 17:56:29 -04:00
For more information, see [ng-show](#ng-show).
2016-11-22 20:07:16 +08:00
2017-02-26 15:04:21 +08:00
在Angular中, 并没有一个内置的*hide*指令,可以改用属性绑定。
2016-06-01 21:32:28 +08:00
参见[ng-show](#ng-show)了解更多。
2016-01-27 14:49:02 -08:00
tr(style=top)
td
:marked
### ng-href
code-example(format="").
<a ng-href="angularDocsUrl">Angular Docs</a>
:marked
2017-01-26 03:26:11 -08:00
The `ng-href` directive allows AngularJS to preprocess the `href` property so that it
2016-01-27 14:49:02 -08:00
can replace the binding expression with the appropriate URL before the browser
fetches from that URL.
2017-02-26 15:04:21 +08:00
`ng-href`指令允许AngularJS对`href`属性进行预处理, 以便它能在浏览器获取那个URL之前, 使用一个返回适当URL的绑定表达式替换它。
2016-06-01 21:32:28 +08:00
2017-01-26 03:26:11 -08:00
In AngularJS, the `ng-href` is often used to activate a route as part of navigation.
2016-06-01 21:32:28 +08:00
2017-02-26 15:04:21 +08:00
在AngularJS 中,`ng-href`通常用来作为导航的一部分,激活一个路由。
2016-01-27 14:49:02 -08:00
code-example(format="").
<a ng-href="#movies">Movies</a>
:marked
2017-01-26 03:26:11 -08:00
Routing is handled differently in Angular.
2016-06-01 21:32:28 +08:00
2017-02-26 15:04:21 +08:00
路由在Angular中的处理方式不同。
2016-01-27 14:49:02 -08:00
td
:marked
2017-02-23 16:27:14 -05:00
### Bind to the `href` property
2016-06-01 21:32:28 +08:00
### 绑定到`href`属性
2017-04-15 16:47:27 +08:00
2017-02-02 18:38:17 +00:00
+makeExample('cb-ajs-quick-reference/ts/src/app/app.component.html', 'href')(format="." )
2017-04-15 16:47:27 +08:00
2016-01-27 14:49:02 -08:00
:marked
2017-02-23 16:27:14 -05:00
Angular uses property binding; there is no built-in *href* directive.
2016-09-13 17:56:29 -04:00
Place the element's `href` property in square brackets and set it to a quoted template expression.
2016-06-01 18:34:02 +08:00
2017-02-26 17:12:55 +08:00
在Angular中, 并没有内置的*href*指令,改用属性绑定。
2016-06-01 21:32:28 +08:00
我们把元素的`href`属性放在方括号中,并把它设成一个引号中的模板表达式。
2017-02-23 16:27:14 -05:00
For more information see the [Property binding](../guide/template-syntax.html#property-binding)
section of the [Template Syntax](../guide/template-syntax.html) page.
2016-06-01 18:34:02 +08:00
2017-04-15 16:47:27 +08:00
要了解[属性绑定](../guide/template-syntax.html#property-binding)的更多知识,参见[模板语法](../guide/template-syntax.html)。
2016-06-01 21:32:28 +08:00
2017-02-23 16:27:14 -05:00
In Angular, `href` is no longer used for routing. Routing uses `routerLink`, as shown in the following example.
2016-06-01 21:32:28 +08:00
2017-02-26 17:12:55 +08:00
在Angular中, `href`不再用作路由,而是改用第三个例子中所展示的`routerLink`指令。
2017-04-15 16:47:27 +08:00
2017-02-02 18:38:17 +00:00
+makeExample('cb-ajs-quick-reference/ts/src/app/app.component.html', 'router-link')(format="." )
2017-04-15 16:47:27 +08:00
2016-01-27 14:49:02 -08:00
:marked
2017-02-23 16:27:14 -05:00
For more information on routing, see the [RouterLink binding](../guide/router.html#router-link)
section of the [Routing & Navigation](../guide/router.html) page.
2016-01-27 14:49:02 -08:00
2017-04-15 16:47:27 +08:00
要了解关于路由的更多信息,请参见[路由与导航](../guide/router.html)的[RouterLink绑定](../guide/router.html#router-link)部分。
2016-06-01 21:32:28 +08:00
2016-01-27 14:49:02 -08:00
tr(style=top)
td
:marked
### ng-if
code-example(format="").
<table ng-if="movies.length">
:marked
2017-01-26 03:26:11 -08:00
In AngularJS, the `ng-if` directive removes or recreates a portion of the DOM,
2016-01-27 14:49:02 -08:00
based on an expression. If the expression is false, the element is removed from the DOM.
2016-06-01 18:34:02 +08:00
2017-02-26 17:12:55 +08:00
在AngularJS中, `ng-if`指令会根据一个表达式来移除或重建DOM中的一部分。如果表达式为假, 元素就会被从DOM中移除。
2016-06-01 21:32:28 +08:00
2017-02-23 16:27:14 -05:00
In this example, the `<table>` element is removed from the DOM unless the `movies` array has a length greater than zero.
2016-06-01 21:32:28 +08:00
2017-04-15 16:47:27 +08:00
在这个例子中,除非`movies`数组的长度大于0, 否则`<table>`元素就会被从DOM中移除。
2016-01-27 14:49:02 -08:00
td
:marked
### *ngIf
2017-02-02 18:38:17 +00:00
+makeExample('cb-ajs-quick-reference/ts/src/app/movie-list.component.html', 'ngIf')(format="." )
2016-01-27 14:49:02 -08:00
:marked
2017-02-23 16:27:14 -05:00
The `*ngIf` directive in Angular works the same as the `ng-if` directive in AngularJS. It removes
or recreates a portion of the DOM based on an expression.
2016-01-27 14:49:02 -08:00
2017-02-26 17:12:55 +08:00
Angular中的`*ngIf`指令与AngularJS中的`ng-if`指令一样,
2016-06-01 21:32:28 +08:00
它根据表达式的值移除或重建DOM中的一部分。
2017-02-23 16:27:14 -05:00
In this example, the `<table>` element is removed from the DOM unless the `movies` array has a length.
2016-06-01 18:34:02 +08:00
2017-04-15 16:47:27 +08:00
在这个例子中,除非`movies`数组的长度大于0, 否则`<table>`元素就会被从DOM中移除。
2016-06-01 21:32:28 +08:00
2016-01-27 14:49:02 -08:00
The (*) before `ngIf` is required in this example.
2016-09-13 17:56:29 -04:00
For more information, see [Structural Directives](../guide/structural-directives.html).
2016-06-01 21:32:28 +08:00
在这个例子中`ngIf`前的星号(*)是必须的。
要了解更多信息,参见[结构型指令](../guide/structural-directives.html)。
2016-01-27 14:49:02 -08:00
tr(style=top)
td
:marked
### ng-model
code-example(format="").
<input ng-model="vm.favoriteHero"/>
:marked
2017-01-26 03:26:11 -08:00
In AngularJS, the `ng-model` directive binds a form control to a property in the controller associated with the template.
2016-09-13 17:56:29 -04:00
This provides **two-way binding**, whereby any change made to the value in the view is synchronized with the model, and any change to the model is synchronized with the value in the view.
2016-11-22 20:07:16 +08:00
2016-06-01 21:32:28 +08:00
在Angular1中, `ng-model`指令把一个表单控件绑定到了模板相关控制器的一个属性上。
这提供了**双向绑定**功能,因此,任何对视图中值的改动,都会同步到模型中,对模型的改动,也会同步到视图中。
2016-01-27 14:49:02 -08:00
td
:marked
### ngModel
2017-04-15 16:47:27 +08:00
2017-02-02 18:38:17 +00:00
+makeExample('cb-ajs-quick-reference/ts/src/app/movie-list.component.html', 'ngModel')(format="." )
2017-04-15 16:47:27 +08:00
2016-01-27 14:49:02 -08:00
:marked
2017-01-26 03:26:11 -08:00
In Angular, **two-way binding** is denoted by `[()]`, descriptively referred to as a "banana in a box". This syntax is a shortcut for defining both property binding (from the component to the view)
2016-09-13 17:56:29 -04:00
and event binding (from the view to the component), thereby providing two-way binding.
2016-06-01 18:34:02 +08:00
2017-02-26 17:12:55 +08:00
在Angular中, **双向绑定**使用[()]标记出来,它被形象的比作“盒子中的香蕉”。
2016-06-14 09:26:54 +08:00
这种语法是一个简写形式,用来同时定义一个属性绑定(从组件到视图)和一个事件绑定(从视图到组件),因此,我们得到了双向绑定。
2016-06-01 21:32:28 +08:00
2017-02-23 16:27:14 -05:00
For more information on two-way binding with `ngModel`, see the [NgModel—Two-way binding to
form elements with `[(ngModel)]`](../guide/template-syntax.html#ngModel)
section of the [Template Syntax](../guide/template-syntax.html) page.
2016-06-01 21:32:28 +08:00
2017-04-15 16:47:27 +08:00
要了解使用ngModel进行双向绑定的更多知识, 参见[模板语法](../guide/template-syntax.html)中的[NgModel—使用`[(ngModel)]`进行双向绑定](../guide/template-syntax.html#ngModel)部分。
2016-01-27 14:49:02 -08:00
tr(style=top)
td
:marked
### ng-repeat
code-example(format="").
<tr ng-repeat="movie in vm.movies">
:marked
2017-01-26 03:26:11 -08:00
In AngularJS, the `ng-repeat` directive repeats the associated DOM element
2016-09-13 17:56:29 -04:00
for each item in the specified collection.
2016-06-01 18:34:02 +08:00
2016-06-01 21:32:28 +08:00
在Angular1中, `ng-repeat`指令会为指定集合中的每一个条目重复渲染相关的DOM元素。
2017-02-23 16:27:14 -05:00
In this example, the table row (`<tr>`) element repeats for each movie object in the collection of movies.
2016-06-01 21:32:28 +08:00
2017-04-15 16:47:27 +08:00
在这个例子中,对`movies`集合中的每一个`movie`对象重复渲染了这个表格行元素(`<tr>`)。
2016-01-27 14:49:02 -08:00
td
:marked
### *ngFor
2017-02-02 18:38:17 +00:00
+makeExample('cb-ajs-quick-reference/ts/src/app/movie-list.component.html', 'ngFor')(format="." )
2016-01-27 14:49:02 -08:00
:marked
2017-02-23 16:27:14 -05:00
The `*ngFor` directive in Angular is similar to the `ng-repeat` directive in AngularJS. It repeats
the associated DOM element for each item in the specified collection.
More accurately, it turns the defined element (`<tr>` in this example) and its contents into a template and
2016-01-27 14:49:02 -08:00
uses that template to instantiate a view for each item in the list.
2016-06-01 18:34:02 +08:00
2017-02-26 17:12:55 +08:00
Angular中的`*ngFor`指令类似于AngularJS中的`ng-repeat`指令。
2016-06-01 21:32:28 +08:00
它为指定集合中的每一个条目重复渲染了相关的DOM元素。
2017-04-15 16:47:27 +08:00
更准确的说,它把被界定出来的元素(这个例子中是`<tr>`)及其内容转成了一个模板,并使用那个模板来为列表中的每一个条目实例化一个视图。
2016-06-01 21:32:28 +08:00
2016-01-27 14:49:02 -08:00
Notice the other syntax differences:
The (*) before `ngFor` is required;
2016-04-30 07:01:16 -07:00
the `let` keyword identifies `movie` as an input variable;
2016-01-27 14:49:02 -08:00
the list preposition is `of`, not `in`.
2016-06-01 18:34:02 +08:00
2016-06-01 21:32:28 +08:00
请注意其它语法上的差异:
在`ngFor`前面的星号(*)是必须的;`let`关键字把`movie`标记成一个输入变量;列表中使用的介词是`of`,而不再是`in`。
2016-09-13 17:56:29 -04:00
For more information, see [Structural Directives](../guide/structural-directives.html).
2016-06-01 21:32:28 +08:00
要了解更多信息,参见[结构性指令](../guide/structural-directives.html)。
2016-01-27 14:49:02 -08:00
tr(style=top)
td
:marked
### ng-show
code-example(format="").
<h3 ng-show="vm.favoriteHero">
Your favorite hero is: {{vm.favoriteHero}}
</h3>
:marked
2017-01-26 03:26:11 -08:00
In AngularJS, the `ng-show` directive shows or hides the associated DOM element, based on
2016-01-27 14:49:02 -08:00
an expression.
2016-06-01 18:34:02 +08:00
2017-02-26 17:12:55 +08:00
在AngularJS中, `ng-show`指令根据一个表达式来显示或隐藏相关的DOM元素。
2016-06-01 21:32:28 +08:00
2017-02-23 16:27:14 -05:00
In this example, the `<div>` element is shown if the `favoriteHero` variable is truthy.
2016-06-01 21:32:28 +08:00
2017-04-15 16:47:27 +08:00
在这个例子中,如果`favoriteHero`变量为真,`<div>`元素就会显示出来。
2016-01-27 14:49:02 -08:00
td
:marked
2017-02-23 16:27:14 -05:00
### Bind to the `hidden` property
2016-06-01 21:32:28 +08:00
### 绑定到`hidden`属性
2017-04-15 17:09:42 +08:00
2017-02-02 18:38:17 +00:00
+makeExample('cb-ajs-quick-reference/ts/src/app/movie-list.component.html', 'hidden')(format="." )
2017-04-15 17:09:42 +08:00
2016-01-27 14:49:02 -08:00
:marked
2017-02-23 16:27:14 -05:00
Angular uses property binding; there is no built-in *show* directive.
2016-09-13 17:56:29 -04:00
For hiding and showing elements, bind to the HTML `hidden` property.
2016-06-01 18:34:02 +08:00
2017-02-26 17:12:55 +08:00
在Angular中, 并没有内置的*show*指令,可以改用属性绑定。
2016-06-20 10:59:00 +01:00
要隐藏或显示一个元素,绑定到它的`hidden`属性就可以了。
2016-06-01 21:32:28 +08:00
2016-06-01 18:34:02 +08:00
To conditionally display an element, place the element's `hidden` property in square brackets and
2016-01-27 14:49:02 -08:00
set it to a quoted template expression that evaluates to the *opposite* of *show*.
2016-06-01 21:32:28 +08:00
要想有条件的显示一个元素,就把该元素的`hidden`属性放到一个方括号里,并且把它设置为引号中的模板表达式,它的结果应该是与*显示*时*相反*的值。
2017-02-23 16:27:14 -05:00
In this example, the `<div>` element is hidden if the `favoriteHero` variable is not truthy.
2016-06-01 18:34:02 +08:00
2017-04-15 16:47:27 +08:00
在这个例子中,如果`favoriteHero`变量不是真值,`<div>`元素就会被隐藏。
2016-06-01 21:32:28 +08:00
2017-02-23 16:27:14 -05:00
For more information on property binding, see the [Property binding](../guide/template-syntax.html#property-binding)
section of the [Template Syntax](../guide/template-syntax.html) page.
2016-06-01 21:32:28 +08:00
2017-04-15 16:47:27 +08:00
要了解关于属性绑定的更多信息,参见[模板语法](../guide/template-syntax.html)中的[模板表达式](../guide/template-syntax.html#property-binding)部分。
2016-01-27 14:49:02 -08:00
tr(style=top)
td
:marked
### ng-src
2017-04-15 16:47:27 +08:00
2016-01-27 14:49:02 -08:00
code-example(format="").
<img ng-src="{{movie.imageurl}}">
2017-04-15 16:47:27 +08:00
2016-01-27 14:49:02 -08:00
:marked
2017-01-26 03:26:11 -08:00
The `ng-src` directive allows AngularJS to preprocess the `src` property so that it
2016-01-27 14:49:02 -08:00
can replace the binding expression with the appropriate URL before the browser
fetches from that URL.
2016-06-01 21:32:28 +08:00
2017-02-26 17:12:55 +08:00
`ng-src`指令允许AngularJS对`src`属性进行预处理, 以便它能够在浏览器获取此URL之前, 用一个返回适当URL的绑定表达式替换它。
2016-06-01 21:32:28 +08:00
2016-01-27 14:49:02 -08:00
td
:marked
2017-02-23 16:27:14 -05:00
### Bind to the `src` property
2016-06-01 21:32:28 +08:00
### 绑定到`src`属性
2017-04-15 16:47:27 +08:00
2017-02-02 18:38:17 +00:00
+makeExample('cb-ajs-quick-reference/ts/src/app/app.component.html', 'src')(format="." )
2017-04-15 16:47:27 +08:00
2016-01-27 14:49:02 -08:00
:marked
2017-02-23 16:27:14 -05:00
Angular uses property binding; there is no built-in *src* directive.
2016-09-13 17:56:29 -04:00
Place the `src` property in square brackets and set it to a quoted template expression.
2016-06-01 18:34:02 +08:00
2017-02-26 17:12:55 +08:00
在Angular中, 并没有一个内置的*src*指令,可以使用属性绑定。
2016-06-20 10:59:00 +01:00
把`src`属性放到方括号中,并且把它设为一个引号中的绑定表达式。
2016-06-01 21:32:28 +08:00
2017-02-23 16:27:14 -05:00
For more information on property binding, see the [Property binding](../guide/template-syntax.html#property-binding)
section of the [Template Syntax](../guide/template-syntax.html) page.
2016-06-01 21:32:28 +08:00
2017-04-15 16:47:27 +08:00
要了解属性绑定的更多知识,参见[模板语法](../guide/template-syntax.html)中的[属性绑定](../guide/template-syntax.html#property-binding)部分。
2016-01-27 14:49:02 -08:00
tr(style=top)
td
:marked
### ng-style
2017-04-15 16:47:27 +08:00
2016-01-27 14:49:02 -08:00
code-example(format="").
<div ng-style="{color: colorPreference}">
2017-04-15 16:47:27 +08:00
2016-01-27 14:49:02 -08:00
:marked
2017-01-26 03:26:11 -08:00
In AngularJS, the `ng-style` directive sets a CSS style on an HTML element
2016-01-27 14:49:02 -08:00
based on an expression. That expression is often a key-value control object with each
2017-02-23 16:27:14 -05:00
key of the object defined as a CSS property, and each value defined as an expression
2016-01-27 14:49:02 -08:00
that evaluates to a value appropriate for the style.
2016-06-01 18:34:02 +08:00
2017-02-26 17:12:55 +08:00
在AngularJS中, `ng-style`指令根据一个绑定表达式设置一个HTML元素的CSS样式。
2017-04-15 16:47:27 +08:00
该表达式通常是一个“键-值”形式的控制对象, 对象的每个键都是一个CSS属性, 每个值都是一个能计算为此样式的合适值的表达式。
2016-06-01 21:32:28 +08:00
2016-01-27 14:49:02 -08:00
In the example, the `color` style is set to the current value of the `colorPreference` variable.
2016-06-01 21:32:28 +08:00
在这个例子中,`color`样式被设置为`colorPreference`变量的当前值。
2016-01-27 14:49:02 -08:00
td
:marked
### ngStyle
2017-02-02 18:38:17 +00:00
+makeExample('cb-ajs-quick-reference/ts/src/app/app.component.html', 'ngStyle')(format="." )
2016-01-27 14:49:02 -08:00
:marked
2017-01-26 03:26:11 -08:00
In Angular, the `ngStyle` directive works similarly. It sets a CSS style on an HTML element based on an expression.
2016-06-01 18:34:02 +08:00
2017-02-26 17:12:55 +08:00
在Angular中, `ngStyle`指令的工作方式与此类似。它根据一个表达式设置HTML元素上的CSS样式。
2016-06-01 21:32:28 +08:00
2016-01-27 14:49:02 -08:00
In the first example, the `color` style is set to the current value of the `colorPreference` variable.
2016-06-01 18:34:02 +08:00
2016-06-01 21:32:28 +08:00
在第一个例子中,`color`样式被设置成了`colorPreference`变量的当前值。
2017-01-26 03:26:11 -08:00
Angular also has **style binding**, which is good way to set a single style. This is shown in the second example.
2016-06-01 18:34:02 +08:00
2017-02-26 17:12:55 +08:00
Angular还有**样式绑定**语法,它是单独设置一个样式的好方法。它展示在第二个例子中。
2016-06-01 21:32:28 +08:00
2017-02-23 16:27:14 -05:00
For more information on style binding, see the [Style binding](../guide/template-syntax.html#style-binding) section of the
[Template Syntax](../guide/template-syntax.html) page.
2016-06-01 18:34:02 +08:00
2017-04-15 16:47:27 +08:00
要了解样式绑定的更多知识,参见[模板语法](../guide/template-syntax.html)中的[样式绑定](../guide/template-syntax.html#style-binding)部分。
2016-06-01 21:32:28 +08:00
2017-02-23 16:27:14 -05:00
For more information on the `ngStyle` directive, see [NgStyle](../guide/template-syntax.html#ngStyle)
section of the [Template Syntax](../guide/template-syntax.html) page.
2016-06-01 21:32:28 +08:00
2017-04-15 16:47:27 +08:00
要了解关于`ngStyle`指令的更多知识,参见[模板语法](../guide/template-syntax.html)中的[NgStyle](../guide/template-syntax.html#ngStyle)部分。
2016-01-27 14:49:02 -08:00
tr(style=top)
td
:marked
### ng-switch
2017-04-15 16:47:27 +08:00
2016-01-27 14:49:02 -08:00
code-example(format="").
2016-06-01 18:34:02 +08:00
<div ng-switch="vm.favoriteHero &&
2016-01-27 14:49:02 -08:00
vm.checkMovieHero(vm.favoriteHero)">
<div ng-switch-when="true">
Excellent choice!
</div>
<div ng-switch-when="false">
No movie, sorry!
</div>
<div ng-switch-default>
Please enter your favorite hero.
</div>
</div>
2017-04-15 16:47:27 +08:00
2016-01-27 14:49:02 -08:00
:marked
2017-01-26 03:26:11 -08:00
In AngularJS, the `ng-switch` directive swaps the contents of
2016-01-27 14:49:02 -08:00
an element by selecting one of the templates based on the current value of an expression.
2016-06-01 18:34:02 +08:00
2016-06-01 21:32:28 +08:00
在Angular1中, `ng-switch`指令根据一个表达式的当前值把元素的内容替换成几个模板之一。
2016-01-27 14:49:02 -08:00
In this example, if `favoriteHero` is not set, the template displays "Please enter ...".
2016-09-13 17:56:29 -04:00
If `favoriteHero` is set, it checks the movie hero by calling a controller method.
2016-01-27 14:49:02 -08:00
If that method returns `true`, the template displays "Excellent choice!".
If that methods returns `false`, the template displays "No movie, sorry!".
2016-06-01 21:32:28 +08:00
在这个例子中,如果`favoriteHero`没有设置, 则模板显示“Please enter ...”。
2016-09-25 19:50:45 +01:00
如果`favoriteHero`设置过,它就会通过调用一个控制其方法来检查它是否电影里的英雄。
2016-06-01 21:32:28 +08:00
如果该方法返回`true`, 模板就会显示“Excellent choice!”。
如果该方法返回`false`, 该模板就会显示“No movie, sorry!”。
2016-01-27 14:49:02 -08:00
td
:marked
### ngSwitch
2017-02-02 18:38:17 +00:00
+makeExample('cb-ajs-quick-reference/ts/src/app/movie-list.component.html', 'ngSwitch')(format="." )
2016-01-27 14:49:02 -08:00
:marked
2017-01-26 03:26:11 -08:00
In Angular, the `ngSwitch` directive works similarly.
2016-06-21 03:03:31 +01:00
It displays an element whose `*ngSwitchCase` matches the current `ngSwitch` expression value.
2016-06-01 18:34:02 +08:00
2017-02-26 17:12:55 +08:00
在Angular中, `ngSwitch`指令的工作方式与此类似。
2016-07-01 08:24:23 +08:00
它会显示那个与`ngSwitch`表达式的当前值匹配的那个`*ngSwitchCase`所在的元素。
2016-06-01 21:32:28 +08:00
2016-01-27 14:49:02 -08:00
In this example, if `favoriteHero` is not set, the `ngSwitch` value is `null`
2016-09-13 17:56:29 -04:00
and `*ngSwitchDefault` displays, "Please enter ...".
If `favoriteHero` is set, the app checks the movie hero by calling a component method.
If that method returns `true`, the app selects `*ngSwitchCase="true"` and displays: "Excellent choice!"
If that methods returns `false`, the app selects `*ngSwitchCase="false"` and displays: "No movie, sorry!"
2016-06-01 18:34:02 +08:00
2016-06-20 10:59:00 +01:00
在这个例子中,如果`favoriteHero`没有设置,则`ngSwitch`的值是`null`,我们会看到
2016-06-01 21:32:28 +08:00
`*ngSwitchDefault`中的段落“Please enter ...”。
2016-06-20 10:59:00 +01:00
如果`favoriteHero`被设置了,它就会通过调用一个组件方法来检查电影英雄。
2016-06-01 21:32:28 +08:00
如果该方法返回`true`, 我们就会看到“Excellent choice!”。
如果该方法返回`false`, 我们就会看到“No movie, sorry!”。
2016-06-21 03:03:31 +01:00
The (*) before `ngSwitchCase` and `ngSwitchDefault` is required in this example.
2016-06-01 18:34:02 +08:00
2016-07-01 08:24:23 +08:00
在这个例子中,`ngSwitchCase`和`ngSwitchDefault`前面的星号(*)是必须的。
2016-06-01 21:32:28 +08:00
2017-02-23 16:27:14 -05:00
For more information, see [The NgSwitch directives](../guide/template-syntax.html#ngSwitch)
section of the [Template Syntax](../guide/template-syntax.html) page.
2016-06-01 21:32:28 +08:00
2017-04-15 16:47:27 +08:00
要了解更多信息,参见[模板语法](../guide/template-syntax.html)中的[NgSwitch指令](../guide/template-syntax.html#ngSwitch)部分。
2016-01-27 14:49:02 -08:00
:marked
[Back to top](#top)
2016-06-01 18:34:02 +08:00
2016-06-01 21:32:28 +08:00
[回到顶部](#top)
2016-01-27 14:49:02 -08:00
a(id="filters-pipes")
.l-main-section
:marked
2016-09-13 17:56:29 -04:00
## Filters/pipes
2016-06-01 21:32:28 +08:00
## 过滤器/管道
2017-02-23 16:27:14 -05:00
Angular **pipes** provide formatting and transformation for data in the template, similar to AngularJS **filters**.
2017-01-26 03:26:11 -08:00
Many of the built-in filters in AngularJS have corresponding pipes in Angular.
2016-09-13 17:56:29 -04:00
For more information on pipes, see [Pipes](../guide/pipes.html).
2016-01-27 14:49:02 -08:00
2017-02-26 17:12:55 +08:00
Angular中的**管道**为模板提供了格式化和数据转换功能, 类似于AngularJS中的**过滤器**。
AngularJS中的很多内置过滤器在Angular中都有对应的管道。
2016-06-01 21:32:28 +08:00
要了解管道的更多信息,参见[Pipes](../guide/pipes.html)。
2016-01-27 14:49:02 -08:00
table(width="100%")
col(width="50%")
2016-06-01 18:34:02 +08:00
col(width="50%")
2016-01-27 14:49:02 -08:00
tr
2017-01-26 03:26:11 -08:00
th AngularJS
th Angular
2016-01-27 14:49:02 -08:00
tr(style=top)
td
:marked
### currency
code-example.
<td>{{movie.price | currency}}</td>
:marked
2017-02-23 16:27:14 -05:00
Formats a number as currency.
2016-06-01 21:32:28 +08:00
把一个数字格式化成货币。
2017-04-15 17:09:42 +08:00
2016-01-27 14:49:02 -08:00
td
:marked
### currency
2017-02-02 18:38:17 +00:00
+makeExample('cb-ajs-quick-reference/ts/src/app/app.component.html', 'currency')(format="." )
2016-01-27 14:49:02 -08:00
:marked
2017-01-26 03:26:11 -08:00
The Angular `currency` pipe is similar although some of the parameters have changed.
2016-06-01 21:32:28 +08:00
2017-02-26 17:12:55 +08:00
Angular的`currency`管道和1中很相似, 只是有些参数变化了。
2016-01-27 14:49:02 -08:00
tr(style=top)
td
:marked
### date
code-example.
2017-03-17 18:32:18 -04:00
<td>{{movie.releaseDate | date}}</td>
2016-01-27 14:49:02 -08:00
:marked
Formats a date to a string based on the requested format.
2016-06-01 21:32:28 +08:00
基于要求的格式把日期格式化成字符串。
2016-01-27 14:49:02 -08:00
td
:marked
### date
2017-02-02 18:38:17 +00:00
+makeExample('cb-ajs-quick-reference/ts/src/app/app.component.html', 'date')(format=".")
2016-01-27 14:49:02 -08:00
:marked
2017-01-26 03:26:11 -08:00
The Angular `date` pipe is similar.
2016-01-27 14:49:02 -08:00
2017-02-26 17:12:55 +08:00
Angular的`date`管道和·中很相似。参见[备注](#string-dates)来了解字符串日期值。
2016-06-01 21:32:28 +08:00
2016-01-27 14:49:02 -08:00
tr(style=top)
td
:marked
### filter
code-example.
<tr ng-repeat="movie in movieList | filter: {title:listFilter}">
:marked
2016-09-13 17:56:29 -04:00
Selects a subset of items from the defined collection, based on the filter criteria.
2016-06-01 21:32:28 +08:00
基于过滤条件从指定的集合中选取出一个子集。
2016-01-27 14:49:02 -08:00
td
:marked
### none
2016-09-15 15:23:48 +08:00
### 没了
2017-01-26 03:26:11 -08:00
For performance reasons, no comparable pipe exists in Angular. Do all your filtering in the component. If you need the same filtering code in several templates, consider building a custom pipe.
2016-01-27 14:49:02 -08:00
2017-02-26 17:12:55 +08:00
在Angular中, 出于性能的考虑, 并没有一个类似的管道。
2016-06-01 21:32:28 +08:00
过滤逻辑应该在组件中用代码实现。
如果它将被复用在几个模板中,可以考虑构建一个自定义管道。
2016-01-27 14:49:02 -08:00
tr(style=top)
td
:marked
### json
code-example.
<pre>{{movie | json}}</pre>
:marked
Converts a JavaScript object into a JSON string. This is useful for debugging.
2016-06-01 21:32:28 +08:00
把一个JavaScript对象转换成一个JSON字符串。这对调试很有用。
2016-01-27 14:49:02 -08:00
td
:marked
### json
2017-02-02 18:38:17 +00:00
+makeExample('cb-ajs-quick-reference/ts/src/app/app.component.html', 'json')(format=".")
2016-01-27 14:49:02 -08:00
:marked
2017-01-26 03:26:11 -08:00
The Angular `json` pipe does the same thing.
2016-06-01 21:32:28 +08:00
2017-02-26 17:12:55 +08:00
Angular的`json`管道做完全相同的事。
2016-01-27 14:49:02 -08:00
tr(style=top)
td
:marked
### limitTo
code-example.
2016-02-24 23:28:45 -08:00
<tr ng-repeat="movie in movieList | limitTo:2:0">
2016-01-27 14:49:02 -08:00
:marked
2016-02-24 23:28:45 -08:00
Selects up to the first parameter (2) number of items from the collection
starting (optionally) at the beginning index (0).
2016-06-01 21:32:28 +08:00
从集合中选择从(第二参数指定的)起始索引号(0)开始的最多(第一参数指定的)条目数(2)个条目。
2016-01-27 14:49:02 -08:00
td
:marked
### slice
2017-02-02 18:38:17 +00:00
+makeExample('cb-ajs-quick-reference/ts/src/app/app.component.html', 'slice')(format=".")
2016-01-27 14:49:02 -08:00
:marked
2016-09-13 17:56:29 -04:00
The `SlicePipe` does the same thing but the *order of the parameters is reversed*, in keeping
2016-06-01 18:34:02 +08:00
with the JavaScript `Slice` method.
2016-02-24 23:28:45 -08:00
The first parameter is the starting index; the second is the limit.
2017-01-26 03:26:11 -08:00
As in AngularJS, coding this operation within the component instead could improve performance.
2016-11-22 20:07:16 +08:00
2016-06-01 21:32:28 +08:00
`SlicePipe`做同样的事,但是*两个参数的顺序是相反的*, 以便于JavaScript中的`slice`方法保持一致。
第一个参数是起始索引号,第二个参数是限制的数量。
2017-02-26 17:12:55 +08:00
和AngularJS中一样, 如果们改用组件中的代码实现此操作, 性能将会提升。
2016-01-27 14:49:02 -08:00
tr(style=top)
td
:marked
### lowercase
code-example.
<div>{{movie.title | lowercase}}</div>
:marked
Converts the string to lowercase.
2016-06-01 21:32:28 +08:00
把该字符串转成小写形式。
2016-01-27 14:49:02 -08:00
td
:marked
### lowercase
2017-02-02 18:38:17 +00:00
+makeExample('cb-ajs-quick-reference/ts/src/app/app.component.html', 'lowercase')(format=".")
2016-01-27 14:49:02 -08:00
:marked
2017-01-26 03:26:11 -08:00
The Angular `lowercase` pipe does the same thing.
2016-06-01 21:32:28 +08:00
2017-02-26 17:12:55 +08:00
Angular的`lowercase`管道和1中的功能完全相同。
2016-01-27 14:49:02 -08:00
tr(style=top)
td
:marked
### number
code-example.
2017-03-17 18:32:18 -04:00
<td>{{movie.starRating | number}}</td>
2016-01-27 14:49:02 -08:00
:marked
Formats a number as text.
2016-06-01 21:32:28 +08:00
把数字格式化为文本。
2016-01-27 14:49:02 -08:00
td
:marked
### number
2017-02-02 18:38:17 +00:00
+makeExample('cb-ajs-quick-reference/ts/src/app/app.component.html', 'number')(format=".")
2016-01-27 14:49:02 -08:00
:marked
2017-01-26 03:26:11 -08:00
The Angular `number` pipe is similar.
2016-06-01 18:34:02 +08:00
It provides more functionality when defining
2016-09-13 17:56:29 -04:00
the decimal places, as shown in the second example above.
2016-06-01 18:34:02 +08:00
2017-02-26 17:12:55 +08:00
Angular的`number`管道很相似。
2016-06-01 21:32:28 +08:00
但在指定小数点位置时,它提供了更多的功能,如第二个范例所示。
2017-01-26 03:26:11 -08:00
Angular also has a `percent` pipe, which formats a number as a local percentage
2016-01-27 14:49:02 -08:00
as shown in the third example.
2016-06-01 21:32:28 +08:00
2017-02-26 17:12:55 +08:00
Angular还有一个`percent`管道,它把一个数组格式化为本地化的(local)百分比格式,如第三个范例所示。
2016-01-27 14:49:02 -08:00
tr(style=top)
td
:marked
### orderBy
code-example.
<tr ng-repeat="movie in movieList | orderBy : 'title'">
:marked
2016-09-13 17:56:29 -04:00
Displays the collection in the order specified by the expression.
2017-03-09 08:13:03 +03:00
In this example, the movie title orders the `movieList`.
2016-06-01 21:32:28 +08:00
使用表达式中所指定的方式对集合进行排序。
2017-04-15 16:47:27 +08:00
在这个例子中,`movieList`被根据movie的title排序了。
2016-01-27 14:49:02 -08:00
td
:marked
### none
2016-09-15 15:23:48 +08:00
### 没了
2017-01-26 03:26:11 -08:00
For performance reasons, no comparable pipe exists in Angular.
2016-09-13 17:56:29 -04:00
Instead, use component code to order or sort results. If you need the same ordering or sorting code in several templates, consider building a custom pipe.
2016-11-22 20:07:16 +08:00
2017-02-26 17:12:55 +08:00
在Angular中, 出于性能的考虑, 并没有一个类似的管道。
2016-09-15 15:23:48 +08:00
排序逻辑应该在组件中用代码实现。
如果它将被复用在几个模板中,可以考虑构建一个自定义管道。
2016-06-01 21:32:28 +08:00
2016-01-27 14:49:02 -08:00
:marked
[Back to top](#top)
2016-06-01 18:34:02 +08:00
2016-06-01 21:32:28 +08:00
[回到顶部](#top)
2016-01-27 14:49:02 -08:00
a(id="controllers-components")
.l-main-section
:marked
2016-09-13 17:56:29 -04:00
## Modules/controllers/components
2016-11-22 20:07:16 +08:00
2016-08-12 07:57:51 +08:00
## 模块/控制器/组件
2016-11-22 20:07:16 +08:00
2017-01-26 03:26:11 -08:00
In both AngularJS and Angular, Angular modules help you organize your application into cohesive blocks of functionality.
2016-11-22 20:07:16 +08:00
2017-02-26 17:12:55 +08:00
无论在AngularJS还是Angular中, 我们都要借助“模块”来把应用拆分成一些紧密相关的功能块。
2016-11-22 20:07:16 +08:00
2017-01-26 03:26:11 -08:00
In AngularJS, you write the code that provides the model and the methods for the view in a **controller**.
In Angular, you build a **component**.
2016-06-01 18:34:02 +08:00
2017-02-26 17:12:55 +08:00
在AngularJS中, 我们在**控制器**中写代码,来为视图提供模型和方法。
在Angular中, 我们创建**组件**。
2016-06-01 21:32:28 +08:00
2017-01-26 03:26:11 -08:00
Because much AngularJS code is in JavaScript, JavaScript code is shown in the AngularJS column.
The Angular code is shown using TypeScript.
2016-01-27 14:49:02 -08:00
2017-02-26 17:12:55 +08:00
因为很多AngularJS的代码是用JavaScript写的, 所以在AngularJS列显示的是JavaScript代码, 而Angular列显示的是TypeScript代码。
2016-06-01 21:32:28 +08:00
2016-01-27 14:49:02 -08:00
table(width="100%")
col(width="50%")
2016-06-01 18:34:02 +08:00
col(width="50%")
2016-01-27 14:49:02 -08:00
tr
2017-01-26 03:26:11 -08:00
th AngularJS
th Angular
2016-01-27 14:49:02 -08:00
tr(style=top)
td
:marked
### IIFE
code-example.
(function () {
2016-02-24 23:28:45 -08:00
...
2016-01-27 14:49:02 -08:00
}());
:marked
2017-04-15 15:34:47 +08:00
In AngularJS, an immediately invoked function expression (or IIFE) around controller code
2017-04-15 16:47:27 +08:00
keeps it out of the global namespace.
在AngularJS中, 用立即调用的函数表达式(IIFE)来包裹控制器代码可以让控制器代码不会污染全局命名空间。
2016-01-27 14:49:02 -08:00
td
:marked
### none
2017-04-15 16:47:27 +08:00
2016-09-15 15:23:48 +08:00
### 没了
2017-04-15 15:34:47 +08:00
2017-02-23 16:27:14 -05:00
This is a nonissue in Angular because ES 2015 modules
handle the namespacing for you.
2016-06-01 18:34:02 +08:00
2017-02-26 17:12:55 +08:00
在Angular中我们不用担心这个问题, 因为使用ES 2015的模块, 模块会替我们处理命名空间问题。
2016-06-01 21:32:28 +08:00
2017-02-23 16:27:14 -05:00
For more information on modules, see the [Modules](../guide/architecture.html#modules) section of the
[Architecture Overview](../guide/architecture.html).
2016-06-01 21:32:28 +08:00
2017-04-15 16:47:27 +08:00
要了解关于模块的更多信息,参见[架构概览](../guide/architecture.html)中的[模块](../guide/architecture.html#modules)部分。
2016-01-27 14:49:02 -08:00
tr(style=top)
td
:marked
### Angular modules
2016-06-01 21:32:28 +08:00
### Angular模块
2016-01-27 14:49:02 -08:00
code-example.
angular.module("movieHunter", ["ngRoute"]);
:marked
2017-02-23 16:27:14 -05:00
In AngularJS, an Angular module keeps track of controllers, services, and other code.
The second argument defines the list of other modules that this module depends upon.
2016-06-01 21:32:28 +08:00
2017-02-26 17:12:55 +08:00
在AngularJS中, Angular模块用来对控制器、服务和其它代码进行跟踪。第二个参数定义该模块依赖的其它模块列表。
2016-01-27 14:49:02 -08:00
td
:marked
2016-08-09 17:38:25 +01:00
### Angular modules
2017-02-02 18:38:17 +00:00
+makeExample('cb-ajs-quick-reference/ts/src/app/app.module.1.ts')(format=".")
2016-01-27 14:49:02 -08:00
:marked
2017-01-26 03:26:11 -08:00
Angular modules, defined with the `NgModule` decorator, serve the same purpose:
2017-04-15 15:34:47 +08:00
2017-02-26 17:12:55 +08:00
Angular的模块用`NgModule`装饰器进行定义,有如下用途:
2017-03-31 15:25:27 -07:00
* `imports`: specifies the list of other modules that this module depends upon
2016-11-22 20:07:16 +08:00
2017-02-26 21:44:00 +08:00
`imports`: 指定当前模块依赖的其它模块列表
2016-11-22 20:07:16 +08:00
2017-03-31 15:25:27 -07:00
* `declaration`: keeps track of your components, pipes, and directives.
2016-11-22 20:07:16 +08:00
2017-02-26 21:44:00 +08:00
`declaration`: 用于记录组件、管道和指令。
2016-07-05 21:20:33 -05:00
2016-09-13 17:56:29 -04:00
For more information on modules, see [Angular Modules](../guide/ngmodule.html).
2016-11-22 20:07:16 +08:00
2016-08-12 07:57:51 +08:00
要了解关于模块的更多知识,参见[Angular Modules](../guide/ngmodule.html)。
2016-11-22 20:07:16 +08:00
2016-01-27 14:49:02 -08:00
tr(style=top)
td
:marked
### Controller registration
2016-06-01 21:32:28 +08:00
### 控制器注册
2016-01-27 14:49:02 -08:00
code-example.
angular
.module("movieHunter")
.controller("MovieListCtrl",
["movieService",
MovieListCtrl]);
:marked
2017-02-23 16:27:14 -05:00
AngularJS has code in each controller that looks up an appropriate Angular module
2016-06-01 18:34:02 +08:00
and registers the controller with that module.
2017-02-26 17:12:55 +08:00
在AngularJS中, 在每个控制器中都有一些代码, 用于找到合适的Angular模块并把该控制器注册进去。
2016-06-01 21:32:28 +08:00
2016-01-27 14:49:02 -08:00
The first argument is the controller name. The second argument defines the string names of
2016-06-01 18:34:02 +08:00
all dependencies injected into this controller, and a reference to the controller function.
2016-06-01 21:32:28 +08:00
第一个参数是控制器的名称,第二个参数定义了所有将注入到该控制器的依赖的字符串名称,以及一个到控制器函数的引用。
2016-01-27 14:49:02 -08:00
td
:marked
2017-02-23 16:27:14 -05:00
### Component decorator
2017-04-15 15:34:47 +08:00
2016-06-01 21:32:28 +08:00
### 组件装饰器
2017-04-15 15:34:47 +08:00
2017-02-02 18:38:17 +00:00
+makeExample('cb-ajs-quick-reference/ts/src/app/movie-list.component.ts', 'component')(format=".")
2016-01-27 14:49:02 -08:00
:marked
2017-02-23 16:27:14 -05:00
Angular adds a decorator to the component class to provide any required metadata.
The `@Component` decorator declares that the class is a component and provides metadata about
2016-09-13 17:56:29 -04:00
that component such as its selector (or tag) and its template.
2016-06-01 18:34:02 +08:00
2017-02-26 17:12:55 +08:00
在Angular中, 我们往组件类上添加了一个装饰器, 以提供任何需要的元数据。
2017-04-15 16:47:27 +08:00
`@Component`装饰器把该类声明为组件,并提供了关于该组件的元数据,比如它的选择器(或标签)和模板。
2016-06-01 21:32:28 +08:00
2017-02-23 16:27:14 -05:00
This is how you associate a template with logic, which is defined in the component class.
2016-06-01 18:34:02 +08:00
2016-06-20 10:59:00 +01:00
这就是把模板关联到代码的方式,它定义在组件类中。
2016-06-01 21:32:28 +08:00
2017-02-23 16:27:14 -05:00
For more information, see the [Components](../guide/architecture.html#components)
section of the [Architecture Overview](../guide/architecture.html) page.
2016-06-01 21:32:28 +08:00
2017-04-15 16:47:27 +08:00
要了解关于模板的更多信息,参见[架构概览](../guide/architecture.html)中的[组件](../guide/architecture.html#components)部分。
2016-01-27 14:49:02 -08:00
tr(style=top)
td
:marked
### Controller function
2016-06-01 21:32:28 +08:00
### 控制器函数
2017-04-15 16:47:27 +08:00
2016-01-27 14:49:02 -08:00
code-example.
function MovieListCtrl(movieService) {
}
:marked
2017-01-26 03:26:11 -08:00
In AngularJS, you write the code for the model and methods in a controller function.
2016-06-01 21:32:28 +08:00
在Angular1中, 我们在控制器函数中写模型和方法的代码。
2016-01-27 14:49:02 -08:00
td
:marked
### Component class
2016-06-01 21:32:28 +08:00
### 组件类
2017-02-02 18:38:17 +00:00
+makeExample('cb-ajs-quick-reference/ts/src/app/movie-list.component.ts', 'class')(format=".")
2016-01-27 14:49:02 -08:00
:marked
2017-01-26 03:26:11 -08:00
In Angular, you create a component class.
2016-06-01 18:34:02 +08:00
2017-02-26 17:12:55 +08:00
在Angular中, 我们写组件类。
2016-06-01 21:32:28 +08:00
2017-01-26 03:26:11 -08:00
NOTE: If you are using TypeScript with AngularJS, you must use the `export` keyword to export the component class.
2016-06-01 18:34:02 +08:00
2017-02-26 17:12:55 +08:00
注意: 如果你正在用TypeScript写AngularJS, 那么必须用`export`关键字来导出组件类。
2016-06-01 21:32:28 +08:00
2017-02-23 16:27:14 -05:00
For more information, see the [Components](../guide/architecture.html#components)
section of the [Architecture Overview](../guide/architecture.html) page.
2016-06-01 21:32:28 +08:00
2017-04-15 16:47:27 +08:00
要了解关于组件的更多信息,参见[架构概览](../guide/architecture.html)中的[组件](../guide/architecture.html#components)部分。
2016-01-27 14:49:02 -08:00
tr(style=top)
td
:marked
### Dependency injection
2016-06-01 21:32:28 +08:00
### 依赖注入
2016-01-27 14:49:02 -08:00
code-example.
MovieListCtrl.$inject = ['MovieService'];
function MovieListCtrl(movieService) {
}
:marked
2017-01-26 03:26:11 -08:00
In AngularJS, you pass in any dependencies as controller function arguments.
2016-09-13 17:56:29 -04:00
This example injects a `MovieService`.
2016-06-01 18:34:02 +08:00
2017-02-26 17:12:55 +08:00
在AngularJS中, 我们把所有依赖都作为控制器函数的参数。
2016-06-01 21:32:28 +08:00
在这个例子中,我们注入了一个`MovieService`。
2016-09-13 17:56:29 -04:00
To guard against minification problems, tell Angular explicitly
2016-01-27 14:49:02 -08:00
that it should inject an instance of the `MovieService` in the first parameter.
2016-06-01 21:32:28 +08:00
我们还通过在第一个参数明确告诉Angular它应该注入一个`MovieService`的实例,以防止在最小化时出现问题。
2016-01-27 14:49:02 -08:00
td
:marked
### Dependency injection
2016-06-01 21:32:28 +08:00
### 依赖注入
2017-02-02 18:38:17 +00:00
+makeExample('cb-ajs-quick-reference/ts/src/app/movie-list.component.ts', 'di')(format=".")
2016-01-27 14:49:02 -08:00
:marked
2017-01-26 03:26:11 -08:00
In Angular, you pass in dependencies as arguments to the component class constructor.
2016-09-13 17:56:29 -04:00
This example injects a `MovieService`.
The first parameter's TypeScript type tells Angular what to inject, even after minification.
2016-06-01 18:34:02 +08:00
2017-02-26 17:12:55 +08:00
在Angular中, 我们把依赖作为组件构造函数的参数传入。
2016-06-01 21:32:28 +08:00
在这个例子中,我们注入了一个`MovieService`。
即使在最小化之后, 第一个参数的TypeScript类型也会告诉Angular它该注入什么。
2017-02-23 16:27:14 -05:00
For more information, see the [Dependency injection](../guide/architecture.html#dependency-injection)
section of the [Architecture Overview](../guide/architecture.html).
2016-06-01 21:32:28 +08:00
2017-04-15 16:47:27 +08:00
要了解关于依赖注入的更多信息,参见[架构概览](../guide/architecture.html)中的[依赖注入](../guide/architecture.html#dependency-injection)部分。
2016-01-27 14:49:02 -08:00
:marked
[Back to top](#top)
2016-06-01 18:34:02 +08:00
2016-06-01 21:32:28 +08:00
[回到顶部](#top)
2016-01-27 14:49:02 -08:00
a(id="style-sheets")
.l-main-section
:marked
2016-09-13 17:56:29 -04:00
## Style sheets
2016-06-01 21:32:28 +08:00
## 样式表
2016-09-13 17:56:29 -04:00
Style sheets give your application a nice look.
2017-01-26 03:26:11 -08:00
In AngularJS, you specify the style sheets for your entire application.
2016-01-27 14:49:02 -08:00
As the application grows over time, the styles for the many parts of the application
2016-09-13 17:56:29 -04:00
merge, which can cause unexpected results.
2017-01-26 03:26:11 -08:00
In Angular, you can still define style sheets for your entire application. But now you can
2016-09-13 17:56:29 -04:00
also encapsulate a style sheet within a specific component.
2016-06-01 21:32:28 +08:00
样式表美化我们的应用程序。
2017-02-26 17:12:55 +08:00
在AngularJS中, 我们为整个应用程序指定样式表。
2016-06-01 21:32:28 +08:00
当应用程序成长一段时间之后,应用程序中很多部分的样式会被合并,导致无法预计的后果。
2017-02-26 17:12:55 +08:00
在Angular中, 我们仍然会为整个应用程序定义样式, 不过现在也可以把样式表封装在特定的组件中。
2016-06-01 21:32:28 +08:00
2016-01-27 14:49:02 -08:00
table(width="100%")
col(width="50%")
2016-06-01 18:34:02 +08:00
col(width="50%")
2016-01-27 14:49:02 -08:00
tr
2017-01-26 03:26:11 -08:00
th AngularJS
th Angular
2016-01-27 14:49:02 -08:00
tr(style=top)
td
:marked
### Link tag
code-example.
<link href="styles.css" rel="stylesheet" />
:marked
2017-01-26 03:26:11 -08:00
AngularJS, uses a `link` tag in the head section of the `index.html` file
2016-09-13 17:56:29 -04:00
to define the styles for the application.
2016-06-01 21:32:28 +08:00
2017-02-26 17:12:55 +08:00
在AngularJS中, 我们在`index.html`的`head`区使用`link`标签来为应用程序定义样式。
2016-01-27 14:49:02 -08:00
td
:marked
### Link tag
2016-06-01 21:32:28 +08:00
### Link标签
2017-02-02 18:38:17 +00:00
+makeExample('cb-ajs-quick-reference/ts/src/index.html', 'style')(format=".")
2016-01-27 14:49:02 -08:00
:marked
2017-01-26 03:26:11 -08:00
In Angular, you can continue to use the link tag to define the styles for your application in the `index.html` file.
2016-09-13 17:56:29 -04:00
But now you can also encapsulate styles for your components.
2016-06-01 21:32:28 +08:00
在Angular2中, 我们可以继续在`index.html`中使用link标签来为应用程序定义样式。
2016-06-20 10:59:00 +01:00
但是也能在组件中封装样式。
2016-06-01 21:32:28 +08:00
2016-01-27 14:49:02 -08:00
:marked
### StyleUrls
2017-01-26 03:26:11 -08:00
In Angular, you can use the `styles` or `styleUrls` property of the `@Component` metadata to define
2016-01-27 14:49:02 -08:00
a style sheet for a particular component.
2016-06-01 21:32:28 +08:00
2017-02-26 17:12:55 +08:00
在Angular中, 我们可以在`@Component`的元数据中使用`styles`或`styleUrls`属性来为一个特定的组件定义样式表。
2016-06-01 21:32:28 +08:00
2017-02-02 18:38:17 +00:00
+makeExample('cb-ajs-quick-reference/ts/src/app/movie-list.component.ts', 'style-url')(format=".")
2016-01-27 14:49:02 -08:00
:marked
2016-09-13 17:56:29 -04:00
This allows you to set appropriate styles for individual components that won’ t leak into
2016-01-27 14:49:02 -08:00
other parts of the application.
2016-06-01 21:32:28 +08:00
2016-10-06 20:48:24 +08:00
这让我们可以为各个组件设置合适的样式,而不用担心它被泄漏到程序中的其它部分。
2016-06-01 21:32:28 +08:00
2016-01-27 14:49:02 -08:00
:marked
[Back to top](#top)
2016-06-01 21:32:28 +08:00
[回到顶部](#top)