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

发布时间 - 2026-01-10 23:12:44    点击率:

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

promise.component.html

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

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

factory.component.html

并发性。这里收到es6的启发。在factory内使用了构造函数,来区分不同的实例。当然,factory接口返回的类型要根据需求来定:仅仅是一个promise?还是返回一整个组件的实例

数据驱动。factory内部我使用了this.scope = $rootScope.$new()。并把每个实例的模板和作用域进行绑定$compile(html())(scope)。感谢毛总,这招真是方便。我们能够真正使用到angular的精髓:用数据来驱动我们的视图了

交互。该demo因为需要与用户进行交互,因此返回了一个promise给调用者。当然实际要看情况。

作用域。由于该组件并不常常需要被调用,因此一旦组件'close'(从视图上消失),就scope.$destroy()、instance.remove()

组件类型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(){...})


# angular  # 动态组件类型  # angular组件类型  # angular 实现下拉列表组件的示例代码  # Angular7创建项目、组件、服务以及服务的使用  # angular4自定义组件非input元素实现ngModel双向数据绑定的方法  # angular6的table组件开发的实现示例  # 详解Angular中实现自定义组件的双向绑定的两种方法  # 浅谈angular2子组件的事件传递(任意组件事件传递)  # 详解Angular6学习笔记之主从组件  # 详解Angular动态组件  # 类似于  # 是一个  # 使用了  # 发性  # 更高  # 要看  # 更容易  # 并把  # 时才  # 绑定  # 对话框  # 这招  # 请参考  # 操作方法  # 调用者  # scope  # color  # Factory  # span  # compile 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: JS弹性运动实现方法分析  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  Laravel怎么使用Intervention Image库处理图片上传和缩放  浏览器如何快速切换搜索引擎_在地址栏使用不同搜索引擎【搜索】  Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理  Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程  Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能  网站制作大概多少钱一个,做一个平台网站大概多少钱?  Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives  如何选择PHP开源工具快速搭建网站?  网站制作壁纸教程视频,电脑壁纸网站?  Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践  Android 常见的图片加载框架详细介绍  原生JS获取元素集合的子元素宽度实例  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  Angular 表单中正确绑定输入值以确保提交与验证正常工作  如何为不同团队 ID 动态生成多个“认领值班”按钮  Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】  实例解析angularjs的filter过滤器  深入理解Android中的xmlns:tools属性  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  Laravel中间件如何使用_Laravel自定义中间件实现权限控制  网站制作价目表怎么做,珍爱网婚介费用多少?  Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程  Laravel如何实现用户注册和登录?(Auth脚手架指南)  消息称 OpenAI 正研发的神秘硬件设备或为智能笔,富士康代工  利用python获取某年中每个月的第一天和最后一天  在centOS 7安装mysql 5.7的详细教程  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  用yum安装MySQLdb模块的步骤方法  Laravel怎么清理缓存_Laravel optimize clear命令详解  html文件怎么打开证书错误_https协议的html打开提示不安全【指南】  如何彻底删除建站之星生成的Banner?  EditPlus中的正则表达式实战(6)  香港服务器建站指南:免备案优势与SEO优化技巧全解析  laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法  公司门户网站制作流程,华为官网怎么做?  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  Swift中循环语句中的转移语句 break 和 continue  JavaScript如何实现倒计时_时间函数如何精确控制  如何在建站宝盒中设置产品搜索功能?  Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理  Python进程池调度策略_任务分发说明【指导】  Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制  javascript中的try catch异常捕获机制用法分析  Laravel如何使用.env文件管理环境变量?(最佳实践)  b2c电商网站制作流程,b2c水平综合的电商平台?  Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程  详解Android——蓝牙技术 带你实现终端间数据传输  齐河建站公司:营销型网站建设与SEO优化双核驱动策略