【问题标题】:ng-change on a input[type=time]ng-change 输入[type=time]
【发布时间】:2015-09-12 03:11:02
【问题描述】:

类型为 time 的输入字段上的 ng-change 指令仅触发一次,不会在后续更改时触发。我可以说这是因为对象引用本身(日期对象)不再改变。有谁知道我可以使 ng-change 指令在这种情况下工作的方法。

我使用的是 chrome 版本 45.0.2454.85(64 位)和 angularjs 版本 1.3.15

【问题讨论】:

标签: angularjs angularjs-ng-change


【解决方案1】:

我的猜测是 ngChange 没有触发,因为 Angular 抛出了一个 NaN,所以该事件永远不会触发(如果是这样的话)。

根据 AngularJS 文档,如果浏览器不支持日期类型字段,它将认为它是文本类型字段。但是,数据必须是有效的 DATE 对象。我建议为该字段编写一个验证器,以确保输入的数据是一个实际的日期对象。

https://docs.angularjs.org/api/ng/input/input%5Bdate%5D

【讨论】:

  • 我检查了它是一个日期对象,第一次更改它有效,但随后的更改不起作用
  • 第一个更改是检测到,但实际的日期对象是空白的。所以模型丢失了,这可能是没有检测到后续更改的原因。我会写一个验证器来保持模型像@C S​​igmon 所说的日期对象
  • 我创建了一个验证器,但是当 modelValue 是一个日期对象时,它仍然不会触发后续更改。我已经更新了plunk。我忘记了什么吗? plnkr.co/edit/6aiWfbv5XzGwGKellGQv?p=preview
  • 将您的字段类型更改为日期而不是时间。如果你注意到它没有因此验证,它没有触发 ngChange。
  • 如果您注意到它没有因此验证,它没有触发 ngChange。在您的示例中,您要求用户选择 2013 年的日期,但只给他们时间选项。这是你的 Plunk fork plnkr.co/edit/fzqG0LkHEZl2Ugqev7Og?p=preview
猜你喜欢
  • 2013-12-07
  • 2015-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多