小编Mar*_*tin的帖子

如何使用AngularJS控制器的无效输入正确清理表单?

我有一个AngularJS表单,其中包含 - 其中一个类型url.后者很重要,因为这会强制相应的输入成为有效的URL.

在某些条件下(例如,要关闭具有此类表单的模式对话框),我想以编程方式清除该表单.为此,我实现reset了通过设置基本清除相应表单模型的方法$scope.formData = {}.因此,它将表单模型设置为新的空白对象.

虽然该分配清除了呈现的HTML表单中的所有有效字段,但它不会清除无效字段,例如无效的URL.例如,如果用户将无效输入提供ht://t/p为URL,则不会从呈现的表单中删除该输入.

我认为这是因为模型没有反映任何无效的URL - 这样一个无效的URL只是不会"模仿"它到模型,因为它没有通过NgModelController#$parsers数组中的验证.因此,在模型中 - 根本没有URL.因此,重置表单模型{}实际上无法更改模型的URL,因为它尚未设置.

但是,如果方法reset显式设置了字段$scope.formData.url = "",则无效的URL将被正确清除(至少,渲染的表单将不再显示它).这是由模型中URL 的显式更改引起的.但是,现在,模型变量formData.url包含空字符串(嗯,不足为奇),而通过使用= {},所有字段都将是undefined相反的.

虽然将单个字段指定""为简单表单的解决方法,但对于包含许多字段的更复杂表单而言,它很快变得很麻烦.

因此,我如何能够以编程方式有效地重置表单 - 包括所有无效的输入字段?

我在http://plnkr.co/c2Yhzs创建了一个Plunker ,您可以在其中检查并运行一个显示上述效果的完整示例.

javascript forms validation angularjs

22
推荐指数
2
解决办法
7863
查看次数

使用Play的ActionBuilder时如何包装动作(以任何顺序)?

我正在使用Play的ActionBuilder创建各种保护我的控制器的操作.例如,我实现IsAuthenticated了以确保只有在用户登录时才能访问某些操作:

case class AuthRequest[A](user: String, request: Request[A]) extends WrappedRequest[A](request)

private[controllers] object IsAuthenticated extends ActionBuilder[AuthRequest] {
  def invokeBlock[A](req: Request[A], block: (AuthRequest[A]) => Future[SimpleResult]) = {
    req.session.get("user").map { user =>
      block(new AuthRequest(user, req))
    } getOrElse {
      Future.successful(Results.Unauthorized("401 No user\n"))
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

使用IsAuthenticated我可以(1)将操作限制为已登录的用户,以及(b)访问登录的用户:

def auth = IsAuthenticated { implicit authRequest =>
  val user = authRequest.user
  Ok(user)
}
Run Code Online (Sandbox Code Playgroud)

此外,我使用ActionBuilder HasToken来确保在请求的标头中存在令牌时调用了一个动作(并且,我可以访问令牌值):

case class TokenRequest[A](token: String, request: Request[A]) extends WrappedRequest[A](request)

private[controllers] object HasToken extends ActionBuilder[TokenRequest] {
  def invokeBlock[A](request: …
Run Code Online (Sandbox Code Playgroud)

authentication scala composition playframework playframework-2.0

9
推荐指数
1
解决办法
4993
查看次数

如何在 Rollup 捆绑的 Sapper 应用程序中使用 Winston 进行日志记录?

我正在尝试让 Winston 日志库与我的 Sapper 应用程序一起使用。该 Sapper 应用程序使用 Rollup 作为模块捆绑器。为了实现我的应用程序,我基本上遵循了以下步骤:

\n\n

启动使用 Rollup 的新 Sapper 项目:

\n\n
npx degit "sveltejs/sapper-template#rollup" my-app\n
Run Code Online (Sandbox Code Playgroud)\n\n

通过安装 Winstonnpm install winston并在文件中添加自定义记录器工厂src/_logging.js

\n\n
npx degit "sveltejs/sapper-template#rollup" my-app\n
Run Code Online (Sandbox Code Playgroud)\n\n

通过工厂获取记录器并在服务器路由中使用记录器src/routes/blog/_posts.js

\n\n
import { createLogger, transports, format } from \'winston\';\n\nexport function createLabeledLogger(label) {\n  return createLogger({\n    level: \'debug\',\n    transports: [new transports.Console()],\n    format: format.combine(\n      format.label({ label: label, message: true }),\n      format.splat(),\n      format.padLevels(),\n      format.simple(),\n    )\n  });\n\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

这就像一个魅力:

\n\n
\xe2\x9c\x94 service worker (16ms)\ndebug:    [posts-server] …
Run Code Online (Sandbox Code Playgroud)

winston rollupjs sapper

6
推荐指数
0
解决办法
985
查看次数