热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

初学angular2的一些总结1.)

先从模块库中引入组件import{Component}from“angular2core”;import{bootstrap}from“angular2plat
  1. 先从模块库中引入组件
  2. import {Component} from “angular2/core”;
  3. import {bootstrap} from “angular2/platform/browser”;
    然后定义组件
@Component({ 
Selector:’my-app’, 这里的my-app是html上自己写的节点
Selector:’[my-app]’, 这里的my-app是节点属性
Selector:’[my-app=123]’, 这里的my-app是节点属性值123’>…
Selector:’.my-app’, 这里的my-app是节点css属性
Styles:[‘h1{background:#fff;color:#ddd}’] 内联样式,作用是改变ui组件的外观
styleUrls:[‘ez-greeting.css’] 外部样式,作用改变ui组件的外观
properties:[‘name’,’country’] 为组件增加属性接口,中括号里面是成员变量,由外到内,调用者设置具体属性后才把具体属性值返回到被调用者自身属性中
directives:[xxApp], 在模板中使用自定义指令(组件是一种指令),这个directives属性应该写在最上面,xxApp应该是依赖被调用组件的类名 class xxApp。如果使用多个指令,写法应该是directives:[[xxApp],[ccApp]]
events:[‘change’] 与properties属性作用方向相反,由内到外,事件触发后才反馈给调用者
pipes:[xxxPipe]用法跟directives一样,用于自定义管道,需要先@Pipe({name:”xxx”})
calss xxxPipe{
//管道类中必须实现的方法,input参数是指需要管道化的左边原始数据,args参数是指若干个可选参数。
transform(input,args){

}}
Template:’xxxxx’ 需要替换的内容
})

定义一个类 class EzApp{}
最后渲染组件 bootstrap(EzApp);

//EzCard 
@Component({
properties:["name","country"]
})

调用EzCard组件以及使用内容,在模板中注意指令对象的写法

//EzApp
@Component({
directives : [EzCard],
template : `[name]="'雷锋'" [country]="'中国'">`
})

属性值绑定常量,两种写法(textContent不能改成其他随意的单词,如果要改样式的单词是style):

//正确,Angular2识别出常量字符串表达式 'Hello,Angular2'
@Component({template:`

`})
//正确,Angular2识别出常量字符串作为属性textContent的值
@Component({template:`

`
})

属性值绑定组件模型中的表达式,html属性已中括号形式绑定类中的构造函数的变量:

@Component({template:`<h1 [textContent]="title">h1>`})
Class EzApp{
Constructor(){
This.title = “xxxxxx”
}
}

(event)事件绑定,相当于on-click

<button (click)="roulette()">ROULETTEbutton>

(下面的ngIf不管哪种写法I一定是大写)

[ngIf]=”trial==true”这样的指令一定要写在<template [ngIf]=”trial==true”>template>才有效
*ngIf=”trial==true”跟template=”ngIf trial==true”指令可以随意写在html任何节点上。

NgFor的原始使用:

<template ngFor [ngForOf]="items" #item #i="index">
<li>[
{{i+1}}] {{item}}li>
template>

NgFor的语法糖使用,一般习惯用第二种写法:

//使用template attribute
"ngFor #item of items;#i=index">...
//使用*前缀
"#item of items;#i=index">...

自定义管道:

@Pipe({name:'ezp',pure:false})//pure为可选参数,用于判断在每个变化检查周期都执行管道的transform()方法,默认true,不检查
class EzPipe{
transform(input,args){
return input + " " +args.join(" ");
}
}

使用上面的管道:


{{ "call " | ezp:'john':'mary':'linda' }}
ngControl=”xxx” //使用控件租获得输入值 
 [(ngModel)] = “xxx.ccc”// 实现模型与表单的双向绑定功能。
//在组件模板中使用
[ngFormControl]=”xxx”
//需要先在对应的类构造函数中创建control对象
This.xxx = new Control(“ccccccc”); //作用是初始化控件显示数据。

定义指令相关内容解释说明:

@Directive({
Selector:”[xxx-cc]”,//括号里面的内容用于在调用该指令的组件模板中作为dom元素
Inputs:[“bgColor:xxx-cc”]//将dom对象的属性映射到指令对象的属性,bgColor需要在类中定义,在调用者组件的模板中使用样板good>
Host:{//用于监听指令所在dom元素的事件,下面是监听点击、鼠标事件
‘(click)’:’onXxx()’,
‘(mouseover)’:’onCccc()’
}
})
Class xxx{ // xxx将作为调用者组件中directives:[xxx]的指向
Constructor(@Inject(ElementRef) er ,@Inject(Renderer) renderer){//renderer用于代替直接的dom操作,然后在方法中使用
//执行指令操作
This.el = er.nativeElement;//获取指令所在的dom元素
This.renderer = renderer;
}
set bgColor(v){//这里的set作用是捕捉每个变化的时刻
this.el.style.color = v;
this.renderer.setElementStyle(this.el,”background”,v);//这里就使用renderer以及它自己的方法
}
onXxx(){};
onCccc(){};
}

服务的封装:
1.定义一个类,实现类里的方法。然后在需要用到的组件类中的构造器里new出来。(强耦合,不适合)
2.使用providers属性,

@Component({        
providers : [EzAlgo] //声明依赖,EzAlgo是封装好的服务类
})
class EzApp{
//Angular2框架负责注入对象
constructor(@Inject(EzAlgo) algo){
//已经获得EzAlgo实例了!
}
}

路由
1需要import{LocationStrategy,Router,ROUTER_DIRECTIVES,ROUTER_PROVIDERS}from “angular2/router”;
2 在组件中配置

router.config([
{path:"/video", component:EzVideo,name:”Video”},
{path:"/music", component:EzMusic,name:”Music”}
])

其中path值为请求路径,component值为组件类名,name值为这json对象用于作为点击跳转事件的实参。
3 在2组件中调用在构造函数中注入的(@Inject (Router) router)对象,调用router.navigate(ptah); //根据给定的url(path),选中组件并在outlet中激活,router对象其实是指向2中的router.config的配置信息,只不过这个指向处理是由框架去做。
4 在组件的@Component中的模板中使用
作为组件内容替换展示的地方。另外还要使用属性directives:[ROUTER_DIRECTIVES],进行指令声明。
5 在启动时还要声明下依赖bootstrap(EzApp,[ROUTER_PROVIDERS]);


推荐阅读
  • Ihavetwomethodsofgeneratingmdistinctrandomnumbersintherange[0..n-1]我有两种方法在范围[0.n-1]中生 ... [详细]
  • Netty框架中运用Protobuf实现高效通信协议
    在Netty框架中,通过引入Protobuf来实现高效的通信协议。为了使用Protobuf,需要先准备好环境,包括下载并安装Protobuf的代码生成器`protoc`以及相应的源码包。具体资源可从官方下载页面获取,确保版本兼容性以充分发挥其性能优势。此外,配置好开发环境后,可以通过定义`.proto`文件来自动生成Java类,从而简化数据序列化和反序列化的操作,提高通信效率。 ... [详细]
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
  • 在本文中,我们将深入探讨 jQuery 中的 DOM 操作与事件处理技术,通过实现类似 Yahoo 邮箱登录框的提示效果来展示其强大功能。我们将详细介绍如何利用简洁的 jQuery 代码提升用户体验,并分享一些实用的示例。同时,我们还会解析这些示例中涉及的具体操作和事件处理方法。 ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • POJ 2482 星空中的星星:利用线段树与扫描线算法解决
    在《POJ 2482 星空中的星星》问题中,通过运用线段树和扫描线算法,可以高效地解决星星在窗口内的计数问题。该方法不仅能够快速处理大规模数据,还能确保时间复杂度的最优性,适用于各种复杂的星空模拟场景。 ... [详细]
  • 在iOS开发中,基于HTTPS协议的安全网络请求实现至关重要。HTTPS(全称:HyperText Transfer Protocol over Secure Socket Layer)是一种旨在提供安全通信的HTTP扩展,通过SSL/TLS加密技术确保数据传输的安全性和隐私性。本文将详细介绍如何在iOS应用中实现安全的HTTPS网络请求,包括证书验证、SSL握手过程以及常见安全问题的解决方法。 ... [详细]
  • 在 Vue 应用开发中,页面状态管理和跨页面数据传递是常见需求。本文将详细介绍 Vue Router 提供的两种有效方式,帮助开发者高效地实现页面间的数据交互与状态同步,同时分享一些最佳实践和注意事项。 ... [详细]
  • 每日前端实战:148# 视频教程展示纯 CSS 实现按钮两侧滑入装饰元素的悬停效果
    通过点击页面右侧的“预览”按钮,您可以直接在当前页面查看效果,或点击链接进入全屏预览模式。该视频教程展示了如何使用纯 CSS 实现按钮两侧滑入装饰元素的悬停效果。视频内容具有互动性,观众可以实时调整代码并观察变化。访问以下链接体验完整效果:https://codepen.io/comehope/pen/yRyOZr。 ... [详细]
  • 本文介绍了如何在iOS平台上使用GLSL着色器将YV12格式的视频帧数据转换为RGB格式,并展示了转换后的图像效果。通过详细的技术实现步骤和代码示例,读者可以轻松掌握这一过程,适用于需要进行视频处理的应用开发。 ... [详细]
  • 本文探讨了资源访问的学习路径与方法,旨在帮助学习者更高效地获取和利用各类资源。通过分析不同资源的特点和应用场景,提出了多种实用的学习策略和技术手段,为学习者提供了系统的指导和建议。 ... [详细]
  • 每日学术推荐:异质图神经网络在抽取式文档摘要中的应用研究
    在抽取式文档摘要任务中,学习跨句子关系是至关重要的一步。本文探讨了利用异质图神经网络来捕捉句子间复杂关系的有效方法。通过构建包含不同类型节点和边的图结构,模型能够更准确地识别和提取关键信息,从而生成高质量的摘要。实验结果表明,该方法在多个基准数据集上显著优于传统方法。 ... [详细]
  • 优化后的标题:利用 jQuery 实现高效树形结构元素选择与操作
    在Web前端开发中,DOM结构本质上是一种树形结构。通过优化后的jQuery选择器,可以高效地选择和操作DOM树中的节点。这些选择器不仅简化了代码编写,还提高了性能和可维护性。本文将详细介绍如何利用jQuery的树形选择器实现高效的元素选择与操作。 ... [详细]
  • 在托管C++中开发应用程序时,遇到了如何声明和操作字符串数组的问题。本文详细探讨了字符串数组在托管C++中的应用与实现方法,包括声明、初始化、遍历和常见操作技巧,为开发者提供了实用的参考和指导。 ... [详细]
author-avatar
空心悟心
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有