首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

AngularDart4.0 英雄之旅-教程-04明细 顶

表达式部分将hero标识为模板输入变量,其中包含每个迭代的英雄详情。 你可以模板中引用这个变量来访问当前英雄的属性。...显示数据的Showing a list property with *ngFor部分阅读更多关于ngFor和模板输入变量和模板语法页的ngFor部分 节点内添加内容hero模板变量来显示英雄属性...为了让选定的英雄更清晰可见,当用户点击英雄名字,你将把这个选定的class应用到。 例如,当用户点击“Magneta”应该用一个独特但微妙的背景颜色渲染,如下所示: ?...您了解了如何在组件模板中使用核心指令ngIf和ngFor。 您在CSS文件中定义了样式,并使用它们来设置应用程序的样式。 你的应用应该看起来像这个实例(查看源代码)。...一个应用程序不应该是一个单一的组件。 在下一页中,您将将应用程序拆分为子组件,并使它们一起工作。

3K30

AngularDart4.0 指南- 模板语法二 顶

不应该提到数据属性两次。...NgFor NgFor是一个迭代指令 - 一种呈现项目列表的方式。 您可以定义一个HTML块来定义应该如何显示单个项目。 您告诉Angular将该块用作呈现列表中每个项目的模板。...字符串“let hero of heroes”是指: 取英雄列表中的每个英雄,将其存储本地英雄循环变量中,并使其可用于每次迭代的模板HTML。...ngFor指令迭代由父组件的heroes属性返回的heroes,并在每次迭代期间将hero设置为列表中的当前项目。 要访问hero的属性,请参考ngFor宿主元素(或其后代内)中的hero输入变量。...* ngFor与index(索引) NgFor指令上下文的index属性返回每个迭代中项目的从零开始的索引。 您可以捕获模板输入变量中的index,并在模板中使用它

29.9K20
您找到你想要的搜索结果了吗?
是的
没有找到

Angular: 最佳实践

我们应该为我们数据添加类型限定,下面有些有用的知识点: 使用类型联合和交集。官网解释了如何使用 TS 编译器组合类型以轻松工作。这在处理来自 RESTful API 数据的非常有用。...应用程序的 tsconfig.json 文件中,我们可以设置这个标志,告诉编辑器未明确类型时候抛出错误。否则,编辑器坚定无法推断变量的类型,而认为是 any 类型。...注意我们是怎么组件类上创建一个 statuses 字段,以便我们可以模版中使用这个枚举。但是假如我们多个组件中使用这个枚举呢?或者假如我们要在不同的组件使用其他枚举呢?我们需要不停创建这些字段?...小经验:当我们带有子元素的 HTML 元素上编写 ngFor 指令,请考虑将该元素分离为单独的组件,就像下面: <div *ngFor="let user...模版中写 *ngIf=”someVariable === 1” 是可以的,其他很长的判断条件就不应该出现在模版中。

2.8K40

【Appetite】ionic3实录(七)次页实现及分析解决问题【下】

放在其它地方可以吗?此外,上面为什么会放个this.cd.detectChanges()?...也就是说,前者只会初始化一次,而后两者每次显示都需要重新初始化,进一步说,若使用后两者方式,对于这里用到的swiper,它不是一个angular封装起来的组件,不会自动初始化,我们每次显示都需要显式调用一下...这并不是说都不要用*ngIf,因为当页面元素太多时会容易导致界面卡顿,所以没用的多余元素应该移除,此时就用它。一句话说就是根据情况合理选择显示控制方法。...问题三的延伸:既然ion-slides已经是封装起来的控件了,我们用它不是可以省掉不少代码?...数据未正确应用 对比上一节的实际效果图,会发现这里只显示了两个图片,什么原因呢?

1.4K20

AngularDart 4.0 高级-管道 顶

@Pipe注解允许您定义将在模板表达式中使用的管道名称。 必须是有效的Dart标识符。 你的管道名称是exponentialStrength。...飞行英雄管道 将一个FlyingHeroesPipe添加到*ngFor迭代器,该迭代器将英雄列表过滤到只能飞行的英雄。...每个管道实例只调用一次服务器。 JsonPipe 在前面的代码示例中,第二个提取管道绑定显示了更多的管道链接。 通过链接到内置的JsonPipe以JSON格式显示相同的英雄数据。...--> 您通过文本字符串来识别排序字段,期望管道通过索引引用属性值(如hero...虽然有些人可能并不在意这种积极的态度,但Angular的产品不应该阻止任何人积极贬低。 因此,Angular团队决定Angular提供的所有内容都将安全地缩小。

6.3K20

Unity基础系列(二)——构建一个视图(可视化数学)

虽然代码会重复,但我们只会定义了一次变量。循环的每一次迭代都会重用它,就像我们之前手动做的那样。 当然其实还可以循环之前定义point。这也允许你循环之外使用变量。...为了能够while表达式中使用它,必须在循环之前定义。 ? 每次迭代,i增长1。 ? 代码写到这,会产生一个编译错误,因为在给i赋值之前,正在尝试使用i。...现在i一次迭代开始变成1,第二次迭代开始变成2,依此类推。但是while表达式是每次迭代之前计算的。所以一次迭代之前,i是0,第二次迭代之前是1,依此类推。...所以第十次迭代之后,i是10。此时需要终止循环,因此的表达式应该被计算为false。 换句话说,只要i不到10,循环应该继续下去。从数学上讲,用i<10来表示。代码也是这样写。 ?...相反,我们可以循环之前计算一次,将其存储Vector 3变量中,并在循环中使用。 ? 我们也可以为循环之前的位置定义一个变量。

2.7K10

100 个 Go 错误以及如何避免:1~4

同时,循环不更新副本;更新原始数组:a。所以最后一次迭代v的值是2,而不是10。...他们想添加一些随机性,以确保开发人员使用映射不会依赖任何排序假设(见 mng.bz/M2JW )。 因此,作为 Go 开发者,我们不应该迭代一个映射对排序做任何假设。...对于创建的每个条目,以及从一次迭代到下一次迭代,选择可能会有所不同。 因此,当一个元素迭代过程中被添加到一个映射中,它可能会在后续的迭代过程中产生,也可能不会产生。...注意,我们也可以使用带标签的continue来进入带标签循环的下一次迭代循环中使用语句switch或select,我们应该保持谨慎。...了解传递给range操作符的表达式循环开始前只计算一次,可以帮助您避免常见的错误,如通道或片迭代中的低效赋值。 使用局部变量或使用索引访问元素,可以防止循环内复制指针出错。

1.2K80

AngularDart 4.0 高级-结构指令 顶

然后该指令会执行应该对该宿主元素及其后代所做的任何操作。 结构指令很容易识别。 在此示例中,星号(*)指令属性名称前面。 <div *ngIf="hero !...<em>它</em>的原意是隐含的。Angular设置let-hero为上下文的$implicit属性的值,<em>NgFor</em>已经用当前<em>迭代</em>的hero初始化了<em>它</em>的值。 API指南描述了额外的<em>NgFor</em>指令属性和上下文属性。...当你编写自己的结构指令<em>时</em>,可以使用这些微观语法机制。 研究NgIf和<em>NgFor</em>的源代码是了解更多信息的好方法。 模板<em>输入</em>变量 模板<em>输入</em>变量是一个变量,其值可以<em>在</em>模板的单个实例中引用。...当两个指令声明相同的宿主元素<em>时</em>,哪一个优先? NgIf或<em>NgFor</em><em>应该</em>先走哪一个? NgIf能否取消<em>NgFor</em>的效果?...结构指令使起作用,就像您在编写自己的结构指令<em>时</em>看到的一样。 兄弟元素组 根元素通常能且<em>应该</em>成为结构指令的宿主,列表元素()是<em>NgFor</em><em>迭代</em>的典型宿主元素。

16K20

译 | 你到底有多精通 C# ?

这是实例化任何类的初始化顺序: 静态字段 (仅限第一次类访问: 静态成员或第一个实例) 静态构造函数 (仅限第一次类访问: 静态成员或第一个实例) 实例字段 (每个实例) 实例构造函数 (每个实例)...类的静态构造函数只调用一次。如果引发异常,则每当您要创建实例或以任何其他方式访问类,都将重新引发此异常。 重新启动进程 (或应用程序域) 之前,该类实际上无法使用。...但是,如果我们希望单个类中具有两个不同的方法实现,的效果也一样好。不过,很难想出做这件事的好理由。 迭代迭代器是用于单步执行构造集合的结构,通常使用 foreach 语句。...它将向日志写入一条消息, 以指示何时输入和退出其作用域。实际代码中, 此上下文可以被数据库连接所取代。里面, 将以流式的方式从返回的结果集中读取行。...当 foreach 循环循环的最后一次迭代之后检查 IEnumerable 中的下一个值,将调用最后一个 yield return 语句之后的代码。

82140

Angular快速学习笔记(2) -- 架构

指令告诉 Angular 一个列表上进行迭代 {{hero.name}}、(click) 和 [hero]把程序数据绑定到及绑定回 DOM,以响应用户的输入。...Angular 每个 JavaScript 事件循环中处理所有的数据绑定,它会从组件树的根部开始,递归处理全部子组件。 ?...服务是一个广义的概念,包括应用所需的任何值、函数或特性。狭义的服务是一个明确定义了用途的类。应该做一些具体的事,并做好。...通过把组件中和视图有关的功能与其他类型的处理分离开,你可以让组件类更加精简、高效 组件不应该定义任何诸如从服务器获取数据、验证用户输入或直接往控制台中写日志等工作。 而要把这些任务委托给各种服务。...的工作模型基于人们熟知的浏览器导航约定: 地址栏输入 URL,浏览器就会导航到相应的页面 页面中点击链接,浏览器就会导航到一个新页面 点击浏览器的前进和后退按钮,浏览器就会在你的浏览历史中向前或向后导航

5.2K20

Unity基础教程系列(新)(二)——构建视图(Visualizing Math)

为了能够while表达式中使用它,必须在上面定义。 ? 每次迭代,通过将其设置为自身加1,将数字增加1。 ? 现在i一次迭代开始变成1,第二次迭代开始变成2,以此类推。...但是while表达式每次迭代之前求值。一次迭代之前i是0,第二次迭代之前它是1,以此类推。第10次迭代之后,i是10。此时,我们希望停止循环,因此的表达式的值应该为false。...这将产生编译器错误,因为另一个分号之后还有第三部分用于递增迭代器,使它与比较分开。该部分在每次迭代结束执行。 ? 为什么for循环中使用i ++而不是++ i?...相反,我们可以循环之前计算一次,将其存储scale变量中,然后循环中使用它。 ? 我们还可以循环之前的位置定义一个变量。当沿着X轴创建一条线,只需要调整循环内位置的X坐标即可。...你可以检查器标题的小型材质预览中或底部的可调整大小的预览中看到此内容。 ? (smoothness设置为一半之后的材质预览) 我们也可以使平滑度可配置,就像为添加一个字段并在函数中使用它一样。

2.5K50

AngularDart4.0 指南- 模板语法一 顶

请遵循以下准则: 没有明显的副作用 快速执行 简单 幂等性 这些指导方针的例外情况应该是在你理解的情况下。 没有明显的副作用 模板表达式不应该更改目标属性的值以外的任何应用程序状态。...表达式应该快速完成,否则用户可能会遇到卡帧,尤其是较慢的设备上。 当他们的计算成本很高,考虑缓存值。 简单 虽然可以编写相当复杂的模板表达式,但是应该避免使用它们。...事件循环的一个回合期间,依赖值不应该改变。如果一个幂等表达式返回一个字符串或一个数字,当它在一行中调用两次时会返回相同的字符串或数字。... 模板上下文字段优先于组件上下文字段。 在上面的deleteHero(hero)中,hero是模板输入变量,而不是组件的hero属性。...当用户输入框中输入“Sally”,DOM元素值属性变为“Sally”。

5.1K10

AngularDart 4.0 高级-生命周期钩子 顶

此示例将SpyDirective应用于由父SpyComponent管理的ngFor英雄迭代器中的。...日志确认输入属性(在这种情况下的name属性)构造没有分配的值。...OnInit 使用ngOnInit有两个主要原因: 施工后不久执行复杂的初始化 Angular设置输入属性后设置组件 有经验的开发人员同意组件应该便于构建且安全。...Angular团队负责人Misko Hevery解释了为什么您应该避免使用复杂的构造函数逻辑。 不要在组件构造函数中获取数据。您不应该担心当在测试下创建或决定显示之前时新组件会尝试联系远程服务器。...构造函数不应仅仅将初始局部变量设置为简单值。 ngOnInit是组件获取其初始数据的好地方。 教程和HTTP章节显示了如何。 还要记住,指令的数据绑定输入属性构建之后才会设置。

6.1K10

Angular 快速学习笔记(1) -- 官方示例要点

组件不应该直接获取或保存数据,它们不应该了解是否展示假数据。 它们应该聚焦于展示数据,而把数据访问的职责委托给某个服务 b. 服务负责业务数据获取和保存,让组件只需要关注展示 c....Angular CLI 命令 ng generate service 会通过给 @Injectable 装饰器添加元数据的形式 providedIn: 'root', 当你顶层提供该服务,Angular...添加路由 ,路由定义 会告诉路由器,当用户点击某个链接或者浏览器地址栏中输入某个 URL ,要显示哪个视图,因此路由包含两个属性: i. path:一个用于匹配浏览器地址栏中 URL 的字符串...ii. component:当导航到此路由,路由器应该创建哪个组件 const routes: Routes = [ { path: 'heroes', component: HeroesComponent...*ngFor 不能直接使用 Observable。 不过,后面还有一个管道字符(|),后面紧跟着一个 async,表示 Angular 的 AsyncPipe。

3.6K00

Angular 快速学习笔记(1) -- 官方示例要点

组件不应该直接获取或保存数据,它们不应该了解是否展示假数据。 它们应该聚焦于展示数据,而把数据访问的职责委托给某个服务 b. 服务负责业务数据获取和保存,让组件只需要关注展示 c....Angular CLI 命令 ng generate service 会通过给 @Injectable 装饰器添加元数据的形式 providedIn: 'root', 当你顶层提供该服务,Angular...添加路由 ,路由定义 会告诉路由器,当用户点击某个链接或者浏览器地址栏中输入某个 URL ,要显示哪个视图,因此路由包含两个属性: i. path:一个用于匹配浏览器地址栏中 URL 的字符串...ii. component:当导航到此路由,路由器应该创建哪个组件 const routes: Routes = [ { path: 'heroes', component: HeroesComponent...*ngFor 不能直接使用 Observable。 不过,后面还有一个管道字符(|),后面紧跟着一个 async,表示 Angular 的 AsyncPipe。

3.6K50

Unity基础系列(三)——数学表面(数字雕刻)

接下来,Awake的时候调整点数组的创建,以便能够容纳更多的点。 ? 当我们根据分辨率每次迭代增加X坐标,简单地创建更多的点只会产生一条更长的线。我们必须调整初始化的循环体以展示第二个维度。 ?...为此,删除旧的for循环声明和if块,以遍历Z的for循环取代,然后循环中创建另一个循环,用于X。第二个嵌套循环中创建点。这个效果其实就是X上循环多次,每一行之后增加Z,就像以前一样。...不再需要i迭代器变量来结束循环了,但它仍然需要索引点数组。在外部循环中定义,但在内循环中增加。通过这种方式,它在整个过程中都是已知的,并且每一个点上都会增加。 ?...注意,Z坐标只在外部循环的每一次迭代中更改。这意味着不用在内部循环中去计算。这样就可以将其提升一级,以减少重复工作。 ? 哪个维度放在外部循环进行遍历会造成影响吗? 我用Z做外循环,用X做内循环。...(数字正弦波) 播放模式中使用这个函数,你会看到熟悉的正弦波,但它是沿着XZ对角线而不是沿着X直线方向的,这是因为我们使用x+z而不是仅仅x作为正弦函数的输入

1.5K40

【Django】大型项目中的django的性能模型字段primary_key

,然后引用它,但在模型类中定义选择和每个选择的名称可以使用它的类中保留所有这些信息,并帮助引用这些选择(例如,Student.SOPHOMORE将在导入学生模型的任何位置工作)。...第二个元素是二进制元组的迭代。每个二进制元组包含一个值和一个可读的选项名称。分组选项可以与单个列表中的未分组选项组合(例如本例中的“未知”选项)。...如果有的话,他们不应该改变太多。 primary_key 如果设置为True,则将此字段设置为模型的主键。...主键字段是只读的。如果更改现有对象的主键值并保存,则会在旧对象旁边创建一个新对象。...例如,如果ImageField名为mug_Shot,则可以模板中使用{{object.mug_Shot.url}}获取图像的绝对路径。 Python Time实例中使用datetime。

2K20
领券