小编Sci*_*ion的帖子

在Play 2.5.2中注入当前应用

我正在使用DI在Play 2.5中访问我的App:

import com.google.inject.{Inject, Provider}
import play.api.mvc._
import play.api.Application

class ApplicationController @Inject()(p: Provider[Application]) extends Controller {
  implicit lazy val app = p.get()
  println(app.hashCode()+"") // Random line to use the injected app
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

ProvisionException: Unable to provision, see the following errors:

1) Tried proxying play.api.Application to support a circular dependency, but circular proxies are disabled. ...
Run Code Online (Sandbox Code Playgroud)

我浏览了Play迁移指南:https//www.playframework.com/documentation/2.5.x/Migration25#Handling-legacy-components

并按照他们所说的那样做以避免循环依赖,但是我仍然遇到该错误。

我还发现了一个我目前未使用的名为disableCircularProxies的变量(http://google.github.io/guice/api-docs/latest/api-diffs/changes/docdiffs_com.google.inject.html)我不确定该怎么做,因此几乎找不到相关信息。

任何想法如何解决这个循环依赖错误?

这是完整的堆栈跟踪:

   Tried proxying play.api.Application to support a circular dependency, but circular proxies are disabled.
  at …
Run Code Online (Sandbox Code Playgroud)

scala playframework playframework-2.5

5
推荐指数
1
解决办法
2122
查看次数

使用特定端口号启动sbt run

我想直接用特定的端口号启动sbt:

 sbt run 9001
Run Code Online (Sandbox Code Playgroud)

不起作用,因为9001被忽略.

但是,首先启动sbt然后使用该命令run 9001

我怎样才能在一个命令行中直接组合我可以在shell中运行?

sbt

5
推荐指数
1
解决办法
4213
查看次数

Internet Explorer(10,11)加载Angular 2应用程序非常慢

我的应用程序完成得益于Angular 2,并且适用于所有浏览器.但是,在IE上加载速度相当慢(10和11,我不支持下面).例如,在Safari,Chrome和Firefox上加载需要约1.5秒,在IE上需要超过5秒(在Edge上需要10秒).我查看了网络选项卡,发现有时它在两次调用之间有一个间隙(0.5到1秒):

IE慢

知道什么可以延迟两次通话之间的IE?

我唯一的领导可能是我的index.html中的垫片排序:

        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width">
        <title>AGA Front App</title>
        <script src='@routes.Assets.versioned("lib/angular2/es6/dev/src/testing/shims_for_IE.js")'></script>
        <script src='@routes.Assets.versioned("lib/es6-shim/es6-shim.min.js")'></script>
        <script src='@routes.Assets.versioned("lib/systemjs/dist/system.src.js")'></script>
        <script src='@routes.Assets.versioned("lib/typescript/lib/typescript.js")'></script>
        <script src='@routes.Assets.versioned("lib/angular2/bundles/angular2-polyfills.js")'></script>
        <script src='@routes.Assets.versioned("lib/rxjs/bundles/Rx.js")'></script>
        <script src='@routes.Assets.versioned("lib/angular2/bundles/angular2.js")'></script>
        <script src='@routes.Assets.versioned("lib/angular2/bundles/http.js")'></script>
        <script src='@routes.Assets.versioned("lib/angular2/bundles/router.dev.js")'></script>
        <script src='@routes.Assets.versioned("systemjs.config.js")'></script>
        <script>
            System.import(path + '/assets/app/bootstrap.ts')
                    .catch(console.error.bind(console));
        </script>
Run Code Online (Sandbox Code Playgroud)

javascript internet-explorer angular

5
推荐指数
1
解决办法
2083
查看次数

JS中的每个函数都是闭包吗

我一直在阅读有关closuresJS的文章。我已经浏览过各种指南,例如https://medium.freecodecamp.org/javascript-closures-simplified-d0d23fa06ba4

我仍然有一个问题。闭包是否仅引用一阶函数(返回函数的函数)。或者,是否有任何功能closure?我真正看到的唯一区别是某些函数没有嵌套,这3个作用域链(外部函数的作用域)之一将是空的,但它仍然不存在。

javascript closures

5
推荐指数
1
解决办法
75
查看次数

Angular2返回已经解决的承诺

我想创建并返回已经解决的(如果你愿意,假的)promise2中的Promise.在angularjs中你会做类似的事情:return $q.defer().promise

我正在考虑这样做:return new Observable<any>.toPromise() 但我不确定这是否是正确的方法.

typescript angular

4
推荐指数
1
解决办法
3890
查看次数

SASS:为关键帧提供参数

我做了这个小小的发光动画:

@include keyframes(teal-glowing) {
    0% { background-color: $teal; -webkit-box-shadow: 0 0 3px $teal; }
    50% { background-color: rgba(3,173,172,0.83); -webkit-box-shadow: 0 0 7px rgba(3,173,172,0.83); }
    100% { background-color: $teal; -webkit-box-shadow: 0 0 3px $teal; }
}
Run Code Online (Sandbox Code Playgroud)

我想知道是否可以做一个通用的,只是给它我作为参数的颜色.而不是创建的teal-glowing,green-glowing...

css sass

4
推荐指数
1
解决办法
1498
查看次数

Angular2 ng-template

我正在使用Angular的2.4.9版本.我想声明一个我可以在几个地方使用的html元素:

<div #template>
 foo
</div>
<header>
 {{ template }}
</header>
<body>
 {{ template }}
</body>
Run Code Online (Sandbox Code Playgroud)

它显然不起作用,解决方案是创建一个组件.我在angular4中看到ng-template确实存在某些调用.角度2.4.X有什么相似之处吗?

html angular

4
推荐指数
1
解决办法
6244
查看次数

ElementRef上的Angular2 getElementsByClassName

我的组件中有以下构造函数:

constructor (private el: ElementRef) {this.el = el.nativeElement}
Run Code Online (Sandbox Code Playgroud)

然后在我的ngOnInit:

ngOnInit() {
 let foos = this.el.getElementsByClassName('foo')
}
Run Code Online (Sandbox Code Playgroud)

触发器: TS2339: Property 'getElementsByClassName' does not exist on type 'ElementRef'.

我确实尝试过将我转换ElementRef为一个HTMLElement没有任何成功.知道如何处理这个错误吗?

typescript angular

4
推荐指数
1
解决办法
3858
查看次数

Angular4:使用HttpClient的拦截器设置微调器

在这里,我编写的拦截器直接通过拦截器处理微调器

@Injectable()
export class ApiInterceptor implements HttpInterceptor {
    constructor(private _globalSpinnerService: GlobalSpinnerService) {}

    intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
        const spinnerParam: string = req.params.get("spinner")
        let handleObs: Observable<HttpEvent<any>> = next.handle(req)
        if(spinnerParam) {
            this._globalSpinnerService.spinner = true
            handleObs.toPromise().then(() => {
                this._globalSpinnerService.spinner = false
            })
        }

        return handleObs
    }
}
Run Code Online (Sandbox Code Playgroud)

它按预期工作。但是,我现在看到我所有涉及微调器的请求都发送了两次。所以我想我删除微调器的方法不是最干净的。手柄结束后,如何告诉我的拦截器取下旋转器?

编辑:

我通过更换我改变了代码handleObs.toPromise().then通过handleObs.do()和它现在工作的罚款。我只是不确定为什么

angular

4
推荐指数
1
解决办法
1984
查看次数

C++函数成员返回

我目前正在学习C++的基础知识,我发现了以下代码:

#include <iostream>
using namespace std;

class MyClass {
    int x;
public:
    MyClass(int val) : x(val) {}
    int& get() {return x;}
};

int main() {
  MyClass foo (10);
  foo.get() = 15;  
  cout << foo.get() << '\n';

  return 0;  
}
Run Code Online (Sandbox Code Playgroud)

我不明白为什么这条线foo.get() = 15有效.对我来说,它看起来像是一个同时获得和设置.我想这是有效的,因为返回类型int&不仅仅是int.

有人可以向我解释它是如何工作的吗?

谢谢.

c++

3
推荐指数
1
解决办法
122
查看次数