我想做以下事情:
我的控制器模型中有一个日期对象,我想让用户修改它。应该给用户两个输入字段。第一个输入字段应该修改日期,另一个是时间。两个输入字段都应该在相同的日期模型上工作。
<input ng-model="model.date" date-format="YYYY-MM-DD">
<input ng-model="model.date" date-format="HH:mm:SS">
我没有找到关于这种绑定的文献。通常,ng-model 指令负责输入字段的值。现在我想用我自己的格式覆盖这个值。此外,如果用户更改输入,则应解析更改并将其放回日期对象。
由于 vanilla js 中的日期操作有点奇怪,我使用 moment.js 来格式化和解析日期和字符串。
我目前的方法如下所示:
app.directive('dateFormat', function() {
return {
restrict: 'A',
link: function(scope, el, at) {
var format = at.dateFormat;
scope.$watch(at.ngModel, function(date) {
var result = moment(date).format(format);
el.val(result);
});
}
};
});
但是,一旦我想更改浏览器中的输入值,这就会中断。我得到一些NaN:NaN ...
我的问题是:
- 我该如何建模?
- 这种方法对角度哲学有效还是我在这里做一些奇怪的事情?
- 我可以一起使用 ng-model 和我的 date-format 指令吗?
- 有没有更简单的方法来做到这一点?