我有一个特点写如下:
trait NewTrait {
def NewTrait(f: Request[AnyContent] => Result): Action[AnyContent] = {
Action { request =>
implicit val newTrait = new model.helper.newTrait
f(request)
}
}
}
还有一个使用该特征的控制器,并尝试将隐式 val newTrait 传递给视图:
object Test extends Controller with NewTrait {
def foo(num: Int) = NewTrait { request =>
val view = (views.html.example.partials.viewWrap)
Ok(views.html.example.examplePage(views.html.shelfPages.partials.sidebar())
}
在 foo 中,newTrait 不在范围内,但是将其纳入范围的最佳实践是什么?对于收到的每个请求,它必须是唯一的。如果我从 foo 中重新声明隐式 val,它会起作用,但我必须每次在控制器中重复该声明,如果我可以将其隐藏在 trait 中,代码看起来会更清晰。有什么方法可以将特征中的隐含值传递给控制器?