如何使用Angular 1.4

时间:2015-11-15 15:23:09

标签: javascript html angularjs angularjs-directive

使用基本输入日期:

 <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

有没有人经历过它?如果是的话,如何解决?

2 个答案:

答案 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