使用 ViewContainerRef 探索Angular DOM操作

Source From:
Exploring Angular DOM manipulation techniques using ViewContainerRef

翻译:giscafer
说明:根据个人理解翻译,不完全词词对应。

每当我读到关于使用Angular DOM的操作时,我总是会看到其中的一个或几个类: ElementRef, TemplateRef, ViewContainerRef等。遗憾的是,尽管Angular文档或相关文章当中提到这三者的一些内容,但我还没有发现关于这三者如何协作的完整的理想模型和示例的描述。本文旨在描述这种模型。

如果你学习过angular.js的话,你就会知道在angular.js中很容易去操作DOM。Angular注入DOM elementlink 函数中,你可以查询组件模板内的任何节点,添加或删除子节点,修改样式等等。然而,这种方法有一个主要缺点——它被紧紧绑定到一个浏览器平台上(意思是脱离浏览器就不能玩了)。

新的 Angular 版本运行在不同的平台上——在浏览器上,在移动平台上,或者在 web worker 中。因此,需要在平台特定API 和框架接口之间进行抽象级别的抽象。从 Angular 来看,这些抽象的形式有以下的参考类型: ElementRef, TemplateRef, ViewRef, ComponentRefViewContainerRef。在本文中,我们将详细介绍每个引用类型,并展示如何使用它们来操作DOM。

继续阅读全文 »

GIS520论坛关闭停止运营

网站从2013年4月24日运营到2017年10月8日,会员数约4W左右,PV后期并不是很活跃。起初搭建GIS520论坛的初衷是,国内GIS论坛并不活跃,都是冷淡或者放养没人管的;当初是学生,拥有这理想和激情,想通过自己搭建一个论坛,定位为GIS学习交流平台,GIS爱好者联盟,提升业界专业互联网社区活跃度,让广大同学有一个可以更好学习和交流的地方。

然而,理想和现实差距比较大,最后还没能达到自己理想的目标,所以关站是必然的。

最后,尽管GIS520社区没了,有机会我还会通过其他平台,视频或者文章的方式,分享一些自己的经验和技术。最后最后,感谢大家!

ionic3开发遇到的一些问题及解决方法

两年前,第一家公司用过ionic1开发过APP,当时对ionic1了解的不是很熟,今年公司重写APP更换技术框架为ionic3,配合ng4的开发,重新接触ionic app开发后,个人感觉开发上效率比较高,日后有时间会深入研究。下边是APP重写时遇到的一些问题总结。

不能使用组件名称作为条件判断依据

为了实现token失效或超时登录,接口拦截请求跳转登录页面,起初我用了组件名称LoginPage作为判断,因为首页请求三个接口,进入首页的时候,三次请求都会判断为token失效,都会跳转登录页面,如果不做当前是否为登录页面判断,都跳转登录页面的话,会出现三次登录页面的重复跳转。

最开始代码为:代码片段1

1
2
3
4
5
6
7
8
//登录失效,自动跳转登录页面
if (json["code"] === -9999) {
let curActiveView = this.nav.getActive();
//根据登录页面组件名称为LoginPage判断
if (curActiveView && curActiveView.component.name!=='LoginPage') {
this.nav.push(LoginPage);
}
}

继续阅读全文 »