angular 动态组件类型详解(四种组件类型)

(编辑:jimmy 日期: 2024/10/1 浏览:2)

组件类型1:纯函数功能,而没有视图部分,即Factory(类似于$http)

promise.component.html

常见的有内置的$http,$q之类的。一般使用promise与作用域进行交互

组件类型2:不是常驻于视图,而是动态插入的、有UI的一类组件,有输入交互、不常被调用(类似于Model对话框)

factory.component.html

并发性。这里收到es6的启发。在factory内使用了构造函数,来区分不同的实例。当然,factory接口返回的类型要根据需求来定:仅仅是一个promise"color: #ff0000">组件类型3:不常驻于视图,但会被经常调用,而且是动态插入的、无输入交互、有UI的一类组件(类似于popover)

factory.component2.html

对比。与上类型组件对比,该类组件更容易被调用(类似于微信右上角的popover)
并发性。要求更高,稍复杂。因此返回组件的实例,让开发者可用调用组件内部的方法(open/close/...)。同时,鉴于需求特殊性,在open()方法处我传入了$event作为UI参数

作用域。由于是隐藏地常驻与视图,因此只当路由切换时才注销实例。scope.$watch('$stateChangeSuccess', function(){scope.destroy()})

组件实例。赋值给作用域的变量 $scope.instance = Mypop.init()

组件类型4:实例之间存在某种关系、不常驻于视图,动态插入、只有视觉交互、有UI的一类组件(类似于ant design的Notification)

factory.component.3.html

对比。与上类组件对比,组件的每个实例之间需要存在某种队列关系,具体操作方法请参考上面的例子。

实例关系。如何维护实例之间的关系?笔者比较笨的方法是开启另一个factory实例,存放一个实例数据,来维护实例之间的关系var _sl = scope.list = []。然后该factory具备操作实例队列的一些方法 _sl.push(token)或者 _sl.shift()。同时每个实例都会监听这个实例队列 _s.$watchCollection('instanceList', function(){...})

一句话新闻

一文看懂荣耀MagicBook Pro 16
荣耀猎人回归!七大亮点看懂不只是轻薄本,更是游戏本的MagicBook Pro 16.
人们对于笔记本电脑有一个固有印象:要么轻薄但性能一般,要么性能强劲但笨重臃肿。然而,今年荣耀新推出的MagicBook Pro 16刷新了人们的认知——发布会上,荣耀宣布猎人游戏本正式回归,称其继承了荣耀 HUNTER 基因,并自信地为其打出“轻薄本,更是游戏本”的口号。
众所周知,寻求轻薄本的用户普遍更看重便携性、外观造型、静谧性和打字办公等用机体验,而寻求游戏本的用户则普遍更看重硬件配置、性能释放等硬核指标。把两个看似难以相干的产品融合到一起,我们不禁对它产生了强烈的好奇:作为代表荣耀猎人游戏本的跨界新物种,它究竟做了哪些平衡以兼顾不同人群的各类需求呢?