使用基本输入日期:
<form name="form">
<input type="date" name="startDate" my-directive.........
我希望通过使用myDirective
在输入中注入值来对相应的$setViewValue
进行单元测试。
基本上我决定使用$parsers.push
来期待检索日期对象(因为在解析器链的末尾):
link: function ($scope, element, attr, ctrl) {
ctrl.$parsers.push(function (viewValue) {
alert(viewValue);
//.....
单元测试呼叫是这样的:
$scope.form.startDate.$setViewValue(new Date(2014,8,14));
我在警报中收到undefined
。
如果我这样打电话:
$scope.form.startDate.$setViewValue('2014-08-14');
我获得Thu Jan 01 1970
而不是Thu Aug 14 2014
。
有没有人经历过它?如果是的话,如何解决?
答案 0 :(得分:0)
根据文档,您应该致电
vm.myForm.startDate.$render();
在$setViewValue
之后
答案 1 :(得分:-1)
$setViewValue('2014-08-14');
将值设置为input元素的value
属性。因此,尝试将值设置为日期对象是无效的。
来自Angular doc:link
当与标准输入一起使用时,视图值将始终是一个字符串(在某些情况下,它会被解析为另一种类型,例如输入[date]的Date对象。)
我很困惑你为什么得到Thu Jan 01 1970
!你能仔细检查传递的字符串是否是一个有效的日期字符串。同样在JS月份基于0,因此对于8月份,您需要使用07
而不是08
。