5

我不确定这是否是一个错误,但这是我想要完成的。我只关心谷歌浏览器,因为这是出于调试目的。我想使用 html5 输入类型 date 并让它更新模型。问题在于,如果我从弹出窗口中选择一个日期,角度不会更新它。如果我改为使用箭头来遍历日期,则它会更新它。还有其他方法可以让 ngModel 更新吗?

<div ng-app>
     <input type="date" data-ng-model="date" style="width:200px;" />
     <br>
     {{ date }}
</div>

这是它的一个小提琴:http: //jsfiddle.net/rtCP3/55/

4

2 回答 2

6

当您向上/向下单击鼠标或单击错误时, Angular 会监听input似乎触发的事件。出于某种原因(错误?)该事件不会从日历对话框中触发。

我创建了简单的指令,该指令注册到change事件然后更新模型。您可以在此处查看一个工作示例。

该指令非常简单:

module.directive('dateFix', function() {
    return {
        restrict: 'A',
        require: 'ngModel',
        link: function (scope, element, attr, ngModel) {
            element.on('change', function() {
                scope.$apply(function () {
                    ngModel.$setViewValue(element.val());
                });         
            });
        }
    };
});

然后像这样使用它:<input type="date" ng-model="dateValue" date-fix />

至少是一个临时的解决方法。

于 2013-02-06T19:16:32.170 回答
1
<form>
     <input type="date" name="date"  data-ng-model="date" style="width:200px;" />
</form>

并且您的值位于:form.date.$viewValue

于 2016-10-05T13:00:51.037 回答