我不确定这是不是一个错误,但这是我想要完成的。我只关心谷歌浏览器,因为这是出于调试目的。我想使用html5输入类型日期并让它更新模型。问题是,如果我从弹出角度选择一个日期角度不更新它。如果我改为使用箭头来运行日期,则更新它。还有其他方法可以让ngModel更新吗?
<div ng-app>
<input type="date" data-ng-model="date" style="width:200px;" />
<br>
{{ date }}
</div>
这是一个小提琴:http://jsfiddle.net/rtCP3/55/
答案 0 :(得分:5)
Angular会侦听input
事件,当您单击鼠标向上/向下或单击错误时,该事件似乎会触发。出于某种原因(bug?),该事件不会从日历对话框中触发。
我创建了一个简单的指令,它注册到change
事件,然后更新模型。您可以看到一个有效的示例here。
该指令非常简单:
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 />
至少是一个临时的解决方法。
答案 1 :(得分:1)
<form>
<input type="date" name="date" data-ng-model="date" style="width:200px;" />
</form>
,您的值为: form.date。$ viewValue ;