问题标签 [angularjs-decorator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
63986 浏览

javascript - 什么是“装饰器”,它们是如何使用的?

我很好奇 AngularJS 中的装饰器到底是什么。除了AngularJS 文档中的简介和youtube 视频中的简短(尽管很有趣)提及外,没有太多关于装饰器的在线信息。

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

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

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

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

0 投票
1 回答
368 浏览

angularjs - 覆盖 $log 后的日志消息不正确

我正在尝试装饰 angular 的$log工厂以将timestamp消息放入日志中。

到目前为止,它工作得很好,除了这种行为:

当我使用 Angular 的默认配置登录时,我收到:

对象 {name: "bryan", message: "was here"} 第三个参数的消息

普朗克

创建装饰器后,日志变成了这样:

[“消息”,对象,“第三个参数”]

Plunker - 代码在这里

所以,对象没有扩展到控制台,我需要点击消息才能看到完整的对象。

有谁知道我错过了什么?或者知道更好的方法来做到这一点并将时间戳放在消息的开头?

0 投票
1 回答
3628 浏览

angularjs - 如何测试角度装饰器功能

我在 Angular 中有一个装饰器,它将扩展 $log 服务的功能,我想对其进行测试,但我看不到这样做的方法。这是我的装饰器的存根:

请注意,这基本上会覆盖该$log.debug()方法,然后在执行一些自定义操作后调用它。在我的应用程序中,这有效,我'inside delegated method!'在控制台中看到了消息。但在我的测试中,我没有得到那个输出。

如何测试我的装饰器功能?
具体来说,我怎样才能注入我的装饰器,使它真正装饰我的$log模拟实现(见下文)?

这是我目前的测试(mocha/chai,但这并不真正相关):

0 投票
1 回答
332 浏览

javascript - 可以扩展 Angular JS 1.2.18 $log 功能吗?

我想弹出一条 toastr 消息以显示 $log 消息。IE:

似乎在 AngularJS 1.2.19 及更高版本中,$provide.decorator扩展 $log 功能的好方法。当然,我使用的是 1.2.18。有没有办法在 1.2.18 中做到这一点?

理想情况下,我想扩展现有功能,而不是完全覆盖它。

我不想修改 Angular 源代码。

0 投票
1 回答
1413 浏览

angularjs - 从 AngularJS 中的控制器返回范围

我想将 Controller 的返回值(始终是对象)绑定到范围。

代替:

像这样:

所以我可以在我的视图中使用它

我想使用它的原因是因为我的指令、服务等仍然像这样工作。

所以我的控制器应该是这样的:

有人可以帮忙。

替代解决方案,例如:

也可以:)

谢谢你的帮助

编辑:我只想返回一个对象 {} 并且这个对象可以通过装饰器或其他东西访问

0 投票
1 回答
424 浏览

javascript - AngularJS Minfication 错误与 $provide.decorator

我的 app.config 中有以下代码(在 url 中强制使用 hashbang),这会在缩小过程中产生问题:

我知道这与 DI 有关,我已经定义了“$provide”,不确定还需要做什么。任何帮助将不胜感激。

0 投票
2 回答
5828 浏览

angularjs - Angularjs - 装饰控制器

我正在尝试为我的控制器设置一个装饰器。我的目的是在我的应用程序中的所有控制器中引入一些常见的行为。

我已将它配置为在 Angular 1.2.x 中工作,但从 1.3.x 开始有一些破坏性的更改会破坏代码。现在得到的错误是“控制器不是函数”

下面是装饰器的代码:

Angular 1.2.x - http://jsfiddle.net/3v17w364/2/ (工作)
Angular 1.4.x - http://jsfiddle.net/tncquyxo/2/ (坏了)

0 投票
0 回答
1359 浏览

angularjs - 在 Angular 1.4 中将 Scope 函数扩展为指令

我正在尝试扩展 angular-ui.github.io/bootstrap/datepicker,但它似乎不起作用。

我不断收到此错误“TypeError:scope.monthChanged 不是函数”我已经调整了来自Angular - ui-bootstrap - datepicker 的代码 - 有没有办法检测月份何时更改?

HTML是:

试试这个插件:http ://plnkr.co/edit/sXuAkUz0l9XdtdUb457V?p=preview 如果检查代码,当我将内联日历更改为下个月时,会出现以下错误代码: TypeError: scope.monthChanged is not a功能——</p>

0 投票
1 回答
723 浏览

angularjs - 在 $exceptionHandler 的装饰器中使用 Angularjs-Toaster

我试图敬酒那些在 $exceptionHandler 装饰器中处理的错误,如下所示,

是plunkr。这给了我以下错误,

我正在使用AngularJS-Toaster来显示错误。现在如何在装饰器中注入烤面包机服务?

0 投票
1 回答
469 浏览

angularjs - Ng-animate 停止使用 $templateRequest 装饰器工作

当我的用户未经身份验证时,我试图避免 Angular js 的模板错误。为此,我来到了这个stackoverflow 解决方案

它对我有用,但现在我注意到我的 ng-animate 停止工作而没有抛出控制台错误。

我错过了什么?

更新:这是使用的代码