什么是“装饰器”以及它们如何使用?

2023-11-29

我很好奇 AngularJS 中的装饰器到底是什么。除了装饰器中的简介之外,网上没有太多关于装饰器的信息AngularJS 文档并在一个简短的(尽管有趣的)提及Youtube 视频.

正如 Angular 的人所说,装饰器是:

服务的装饰,允许装饰者拦截服务 实例创建。返回的实例可能是原始实例, 或委托给原始实例的新实例。

我真的不知道那是什么means,我不确定为什么你要把这个逻辑与服务本身分开。例如,如果我想在不同条件下返回不同的东西,我只需将不同的参数传递给相关函数或使用共享该私有状态的另一个函数。

我仍然是一个 AngularJS 菜鸟,所以我确信这只是我的无知和/或坏习惯。


一个很好的用例$provide.decorator是当您需要对模块所依赖的某些第三方/上游服务进行较小的“调整”,同时保持服务完好无损(因为您不是服务的所有者/维护者)时。Here是一个关于plunker的演示。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

什么是“装饰器”以及它们如何使用? 的相关文章

  • 我可以动态创建/销毁 Vue 组件吗?

    因此 我正在创建一个相当复杂的 Vue 应用程序 它从后端 API 获取数据并将其显示在前端 具体取决于用户选择的过滤器 它的默认设置是立即显示所有内容 然后一旦用户选择过滤器 它就会拉出不具有这些属性的 卡片 组件 直到今天 一切都很顺利
  • 我如何使用 querySelector() 选择具有双类的元素

    当我想使用 querySelector 选择元素时遇到问题 ul class xoxo blogroll ul 我怎样才能选择它ul元素 在我的代码中我像这样使用 var list document body querySelector u
  • JavaScript - 无需布尔值即可运行一次

    有没有办法只运行一段JavaScript代码ONCE 而不使用布尔标志变量来记住它是否已经运行过 具体来说not就像是 var alreadyRan false function runOnce if alreadyRan return a
  • 您可以将现有的 div 复制到模式对话框吗

    我有一个带有多个面板的仪表板来显示不同的信息 我希望能够添加一个按钮来以模式显示面板 我正在使用引导程序 我所能找到的只是已经编写的模态 我想复制作为面板的 div 标签的内容 然后将其显示在模型中 但我不确定如何进行 该面板的 html
  • 在 setInterval / setTimeout 中使用变量作为时间[重复]

    这个问题在这里已经有答案了 这是一个示例情况 var count time 1000 setInterval function count 1 time 上面的代码会将 count 变量加 1 即 1000 毫秒 看来 setInterva
  • 如何在php中使用一张图像绘制形状

    我需要使用图像的一部分来创建帧图像 例如 用户将从后端上传图像片段 现在我需要根据前端用户的要求在前端创建一个框架 用户将选择框架的高度和宽度 然后他将选择该图像片段 如下所示 我没有办法做到这一点 我尝试通过 css 和 html can
  • setInterval() 在用户离开选项卡时暂停?

    javascript 中是否有任何方法的行为类似于 setInterval 并且当用户离开选项卡时停止并在用户再次进入选项卡时恢复 您可以使用以下方法创建自己的 API可见性API https developer mozilla org e
  • 如何循环遍历对象数组并生成键值对?

    我有一个像这样的对象数组 let someObj items id 12 value true id 34 value true id 56 value false 我想将其添加到现有对象中 其中 id 是该对象的键 如下所示 let ob
  • “|”是什么意思(单管道)在 JavaScript 中做什么?

    console log 0 5 0 0 console log 1 0 1 console log 1 0 1 为什么0 5 0返回零 但任何整数 包括负数 都返回输入整数 单管道 有什么作用 这是一个按位或 https developer
  • 如何在 javascript 中基于类型字符串创建新对象?

    如何基于变量类型字符串 包含对象名称 在 javascript 中创建新对象 现在我有 随着更多工具的出现 列表会变得更长 function getTool name switch name case SelectTool return n
  • 自定义指令链接中的 element.replaceWith 仅在第一次调用时有效

    我是 Angularjs 的新手 不太了解幕后的情况 基本上我想创建一个 E 扭结指令 基于控制器中的数据 我动态创建html 就像整个 表 一样 以替换该指令 我的 html 文件中的指令是这样的
  • 有没有办法伪造同步 XHR 请求?

    我正在使用 Emscripten 系统将一堆 C 代码移植到 Javascript C 代码有很多调用fopen这是一个同步 IO 调用 在 Emscripten 中 我们使用对本地资源的 XHR 请求来模拟这一点however 在 Fir
  • 尝试使用 Firebug 查找 JavaScript 文件中的函数

    我试图找到这个函数调用 myFooBar 该函数在某些 HTML 中内联引用 但页面加载了大量 JavaScript 并且在每个文件中搜索该函数需要相当多的工作 如何使用 Firebug 找到此函数所在的 JavaScript 文件 打开脚
  • 根据特定字符获取整个字符串或子字符串

    我有一个包含 MIME 类型的字符串 例如application json 现在我想将其与实际的 HTTP 标头进行比较 在本例中content type 如果标头包含 MIME 类型 那么就很简单 if mimeType contentT
  • JavaScript 中的实时摩尔斯电码转换器

    在看到谷歌关于莫尔斯电码 gmail 的愚人节笑话后 我想我应该尝试用 javascript 创建一个实时莫尔斯电码转换器 我正在使用正则表达式和替换将莫尔斯电码更改为字符 例如 replace g a replace g r 我遇到的问题
  • 不使用控件时,视频元素在 Chrome 中消失

    So I think这是一个浏览器错误 它出现在一个更复杂的设计 网站中 但我已经进行了很好的尝试 简化了我的代码和设计等 并发现了以下内容 嵌入时
  • 使用 AJAX 和 JQuery 按设定的时间间隔刷新 Rails 部分

    I have a page in my rails application that looks like 现在 我有另一个用 python 编码的人工智能应用程序 它处理视频 显示在 Rails 应用程序页面的左侧 并使用捕获的车辆及其相
  • 在方法内部执行方法

    我目前正在 FreeCodeCamp 中进行 JavaScript 练习 我的代码应该使用的测试用例之一是函数调用 如下所示 addTogether 2 3 这是我得到的基本功能 function addTogether return 当我
  • 搜索多维数组 JavaScript

    我有一个如下所示的数组 selected products 0 r1 7up 61 Albertsons selected products 1 r3 Arrowhead 78 Arrowhead selected products 2 r
  • ReactJs 警告:不推荐使用改变“style”。考虑事先克隆它

    我收到以下警告 inWarning div was passed a style object that has previously been mutated Mutating style is deprecated Consider c

随机推荐

  • 在 iFrame 内的新窗口中打开链接

    我正在寻找创建类似于 Digg Stumbleupon 栏的东西 它固定在新打开的页面的顶部 在我的应用程序中 我显示了一堆指向外部站点的链接 不 当有人单击其中一个时 我希望它们在新选项卡中打开 我的徽标 栏位于页面顶部 我认为这可以使用
  • cookie“安全”标志如何工作?

    我知道 cookie 与secure标志不会通过未加密的连接发送 我想知道这是如何深入运作的 谁负责决定是否发送cookie 客户端仅为加密连接设置此项 这在中定义RFC 6265 Secure 属性将 cookie 的范围限制为 安全 通
  • 如何在symfony2中设置表前缀

    就像问题主题一样 如何在 symfony2 中设置默认表前缀 如果可以为所有实体默认设置 但可以选择覆盖单个实体 那就最好了 在我自己弄清楚这一点之后 我想详细说明如何实现这一目标 Symfony 2 Doctrine 2 1 Note I
  • Fortran 语言中的日期时差

    我的目标是让 fortran 返回作为字符串传入的两个时间之间的差异 与 VBA 的 TimeDiff 非常相似 我已经在 Fortran 中处理日期和时间有一段时间了 但在这种特殊情况下找不到我需要的东西 Fortran 中的第一个问题是
  • 在R中,如何查找位于工作目录之上的任何父目录中的文件?

    当我位于给定的工作目录中时 如何找到位于的文件any上升了几级 我想按文件名搜索该文件 但不知道该文件是否仅位于上一级目录 还是位于上一级目录 因此 我正在寻找一种每次升级一级并搜索文件的方法 找到后 我想获取该文件的绝对完整路径 我正在尝
  • matlab 热图转彩色图像

    我有一个灰度图像 我可以使用以下命令在 matlab 中创建热图 I imagesc I 它以颜色显示强度值 我想使用此热图获取彩色图像 我该怎么做 This is the output of imagesc 据推测 彩色图像 是指 RGB
  • 使用react-data-table-component过滤数据表

    我需要将下面的代码转换为没有钩子的普通类组件 任何人都可以帮助我 这是我指的链接https jbetancur github io react data table component path story filtering exampl
  • C# 如何判断hwnd是否在托盘图标中

    我正在尝试获取当前托盘图标的 hwnd 我所做的是使用以下代码获取系统trat窗口的hWnd DllImport user32 dll SetLastError true static extern IntPtr FindWindowEx
  • 当数组有子数组时 array_intersect 会抛出错误

    我正在尝试使用array intersect比较两个数组的数组 start array id gt 1 name gt Up action gt up start array id gt 3 name gt Down action gt d
  • JBoss Wildfly 与 Jersey Web 服务部署错误 JBAS011859:命名上下文是只读的

    我正在开发一个使用 Jersey Servlet 1 18 1 的 Java Web 服务项目 将我的 EAR 文件部署到 Jboss WildFly 8 1 0 时 我收到以下错误 并且我不确定为什么它会中断 因为同一个 EAR 文件在
  • 如何在 Google App Engine 的 ManyToOne 端按父实体过滤实体

    我使用谷歌应用程序引擎 当我尝试执行如下 JPA 查询时 SELECT p FROM Participant p WHERE p party id partyKey AND p name participantName 我收到以下错误 Ca
  • ng-repeat 动画不起作用

    我的 ng repeat 动画似乎不起作用 这是笨蛋 http plnkr co edit kYtzM9d0rzGmrniybz9c p preview 任何输入 1 您已注册两个模块 And Remove ng app来自 html 标签
  • 按钮悬停颜色更改动画 c#

    我创建了一个 Windows 窗体 它有 3 个按钮 因此 我想通过使用 mouseenter 事件来更改颜色的一键式按钮 工作正常 但我需要通过淡入或淡出的过渡来改变颜色 任何对此问题有答案的人请告诉我下面的代码 我将向您展示我的 mou
  • 通过 aws.push 部署到 Elastic Beanstalk 时保留某些现有文件

    我们在 EC2 服务器上的应用程序目录中有 SOLR 而不是在本地 git 存储库中 当我们将本地存储库推送到 EC2 时 它会删除 Solr 目录 我们已将目录名称放入 gitignore 文件中 但它仍然覆盖 SOLR 目录 我们如何防
  • IE 7 CTRL + 单击打开一个新窗口 - 如何抑制它?

    Is it possible to suppress the default IE 7 functionality when CTRL click on link opens a new window if so how Thanks Th
  • 如何在 SQL Server 2008 中从 IP 地址获取计算机名称?

    我必须从 SQL Server 中的 IP 地址获取计算机名称 我可以做些什么来完成我的任务 DB IPAdd MachineName Query select MachineName from DBTable where IPAdd yo
  • 在安卓中搜索

    我有一个应用程序 我希望在其中添加搜索功能 我正在尝试按照中所述实施developer android但是当我单击模拟器中的搜索时 活动没有启动 问题是什么 SearchActivity java public class SearchAc
  • 在 Spring Boot 中禁用自动日志记录配置

    我使用 spring boot 1 2 1 RELEASE 并注意到 spring 在启动时自动更改我的 log4j 配置 这是我的 春季 依赖项
  • 用于设置类的 CKEditor 插件

    我想做的是类似于本机前景色 背景颜色对话框 不同之处在于 它将直接在工具栏中包含带有颜色的按钮 所以一个插件必须有多个按钮 具有不同的样式 颜色 另一个问题是 这个原生插件设置了 CSScolor and background color特
  • 什么是“装饰器”以及它们如何使用?

    我很好奇 AngularJS 中的装饰器到底是什么 除了装饰器中的简介之外 网上没有太多关于装饰器的信息AngularJS 文档并在一个简短的 尽管有趣的 提及Youtube 视频 正如 Angular 的人所说 装饰器是 服务的装饰 允许