问题很简单:使用AngularJS我们不能将$ log注入提供者.
angular.module('my.module', [])
.provider('myProvider', function ($log, $logProvider) {
$log.log("Aloha!"); // Unknown provider: $log
$logProvider.log("Hi!"); // undefined is not a function: $logProvider has no `log` method
this.$get = function($log) {
$log.log("Hello!"); // Everything is ok here
};
});
Run Code Online (Sandbox Code Playgroud)
是的,我们可以注入$logProvider,但它没有需要的方法(.log,.error等).
是的,我们可以注入$logProvider,然后手动调用$logProvider.$get(),但我们将无法使用装饰器的其他逻辑.
是的,我们可以编写自己的logProvider,但我想知道为什么Angular不支持这个开箱即用的功能.
那么,我们不能在提供者中以"真正的角度方式"使用控制台吗?这个事实很奇怪.而且伤心.
问题:我如何在提供商中以"真正的角度方式"使用控制台?
我无法找到这个问题的任何解释.Angular Developers Guide说我们需要在每个地方使用$ log而不是控制台.
我使用TypeScript版本2.3.4.我想编写一个接受必须具有指定字段的对象的函数.但是此对象不应包含任何其他字段.我怎样才能做到这一点?
现在这只有在我定义对象内联时才有效.但是,如果我使用另一个带有额外字段的对象 - 编译器将允许它.什么是完全错误的.
例:
function foo(arg: { a: string }) { // there is tons of fields actually
// ...
}
foo ({a: "qwerty"}); // No Error - ok
foo ({a: "qwerty", b: 123}); // Error - ok
let bar = {
a: "qwerty",
b: 123
};
foo (bar); // No Error - NOT OK !!!
Run Code Online (Sandbox Code Playgroud)
可以使用接口,类,类型声明来编写相同的代码 - 这是同样的问题.
现在我必须手动从对象中提取字段,以确保没有额外的字段.但是我无法在整个代码中传播〜1000个函数(我真的需要这个) - 它太乱了.我创建API包装器,我需要确保没有传递给服务器的额外或错误的字段.
我一直在寻找一些流行的console.log()包装纸/填料:
我注意到他们都接受多个arguments,但他们都做这样的事情:
console.log(arguments);
Run Code Online (Sandbox Code Playgroud)
这导致像这样的输出(在Chrome中):
Run Code Online (Sandbox Code Playgroud)
这导致像这样的输出(在Chrome中):
今天我发现,$injector注入配置或提供商不同于$injector注入服务,工厂或控制器.
而get()从这个$喷射功能的工作方式不同.
$injector从配置或提供商,不能get()任何服务!$injector.get('myService')抛出Error: [$injector:unpr] Unknown provider: myService,但$injector.has('myService')返回真实.这非常奇怪.
$injector 从服务或控制器正常工作.
以下是一个代码示例,以便更好地理解:
angular.module('app', [])
.provider('myProvider', function ($injector) {
this.$get = ['$injector', function (serviceInjector) {
return {
providerInjector: $injector,
serviceInjector: serviceInjector
};
}];
})
.service('myService', function () {})
.controller('myCtrl', function ($scope, myProvider) {
var providerInjector = myProvider.providerInjector;
var serviceInjector = myProvider.serviceInjector;
console.log(providerInjector === serviceInjector); // -> false
console.log(serviceInjector.has('myService')); // `serviceInjector` has `myService`
console.log(getMyService(serviceInjector)); // `serviceInjector` can get `myService` …Run Code Online (Sandbox Code Playgroud) 问题很简单:我需要为NancyFX添加批量请求支持.
最近我在github上发现了关于Nancy批处理支持的问题.问题是很久以前创建的,但仍然没有任何可行的解决方案.这个问题 - 我唯一提到的Nancy批处理我发现了!
使用来自该gist和pull请求的代码,我们可以解析批处理请求到部件,并创建Nancy Request对象.我们甚至可以将它们发送给NancyEngine.
var contentType = new ContentType(Request.Headers.ContentType);
var multipartRequest = new HttpMultipart(Request.Body, contentType.Boundary);
foreach (var boundry in multipartRequest.GetBoundaries())
{
var subRequest = boundry.Value.ReadAsRequest(); // our extension
nancyEngine.HandleRequest(subRequest,
context =>
{
// success
},
exception =>
{
// error
});
}
Run Code Online (Sandbox Code Playgroud)
但是我从多个Nancy响应中创建批量响应时遇到了麻烦.我需要像MultipartContentASP WebApi 这样的类,但是对于Nancy来说.
有谁知道任何工作南希配料解决方案?或者可以帮助创建多个Nancy响应的批量响应?