Javascript AngularJS-Can';无法在视图中显示日期对象
我试图在视图中显示日期对象 我遵循这些文件: 但是没有成功 我确实有相同的代码:(编辑:删除了controllerAs语法并添加了$scope) 但我还是犯了一个错误 错误:[ngModel:datefmt]预计Javascript AngularJS-Can';无法在视图中显示日期对象,javascript,angularjs,html,date,Javascript,Angularjs,Html,Date,我试图在视图中显示日期对象 我遵循这些文件: 但是没有成功 我确实有相同的代码:(编辑:删除了controllerAs语法并添加了$scope) 但我还是犯了一个错误 错误:[ngModel:datefmt]预计2013-10-22为日期 有人知道是什么导致了这个问题吗?我试着在网上查找,但我找到的所有答案都是日期对象无效,我很确定我的不是。(或者是…) 编辑: 由于很多人在理解我的问题时遇到困难,让我用一个JSFIDLE来说明: 在输出中,我看到的是“dd-mm-2013”,而不是“22-10
2013-10-22
为日期
有人知道是什么导致了这个问题吗?我试着在网上查找,但我找到的所有答案都是日期对象无效,我很确定我的不是。(或者是…)
编辑:
由于很多人在理解我的问题时遇到困难,让我用一个JSFIDLE来说明:
在输出中,我看到的是“dd-mm-2013”,而不是“22-10-2014”。为什么会这样
编辑2:(解决方案)
我尝试的解决方案之一是将角度输入日期模块添加到我的项目中。我刚刚从我的项目中删除了这个,似乎问题已经解决了。阅读本模块的文档时,我发现:
AngularJS的最新稳定版本(~1.2.26)不支持输入[type=“date”]。仅为Angular的1.3分支添加了支持,该分支现在处于测试阶段
因为我使用的是angular 1.5.x,所以已经有了对它的本机支持,而这个模块实际上导致了这个问题。这也解释了为什么我的JSFDLL不工作,因为它使用的是angular 1.0.1检查对象ng model=“user.example.value”是否已在控制器内初始化用户对象
angModule.directive('moDateInput', function ($window) {
return {
require:'^ngModel',
restrict:'A',
link:function (scope, elm, attrs, ctrl) {
var moment = $window.moment;
var dateFormat = attrs.moDateInput;
attrs.$observe('moDateInput', function (newValue) {
if (dateFormat == newValue || !ctrl.$modelValue) return;
dateFormat = newValue;
ctrl.$modelValue = new Date(ctrl.$setViewValue);
});
ctrl.$formatters.unshift(function (modelValue) {
if (!dateFormat || !modelValue) return "";
var retVal = moment(modelValue).format(dateFormat);
return retVal;
});
ctrl.$parsers.unshift(function (viewValue) {
var date = moment(viewValue, dateFormat);
return (date && date.isValid() && date.year() > 1950 ) ? date.toDate() : "";
});
}
};
});
//控制器内部
$scope.user={};
$scope.user.example={value:newdate(“2013年9月22日”)}
angular.module('app',[])
.controller('controller',function($scope){
$scope.user={};
$scope.user.example={
价值:新日期(“2013年9月22日”)
};
})
这里我将ng模型对象的日期设置为当前日期 ng模型对象:
可能是
that.example.value
而不是user.example.value
不,that.example.value基本上是$scope.example.value,并使用ControllerAs语法和UserController作为用户在您提供的JSFIDLE中,我看到的是dd-mm-2013,而不是实际日期我知道您只是想帮助我,但您读过我的帖子吗?是的。我请求您检查控制器函数中是否提到$scope.user={},它没有改变任何内容。我的视图正在读取正确的变量,否则我的错误将不知道“错误:[ngModel:datefmt]预计2013-10-22为日期”中的日期。user.example.value=$scope.example.valueOk然后以这种方式创建日期对象并选中。$scope.example={value:newdate(2013,09,22)};也许这是最后的办法,但我正试图了解为什么它不起作用,这并没有真正的帮助。我有一个日期字符串,我想在视图中将其显示为日期对象。这个指令似乎更适合于在不同类型的输出中解析日期。感谢您的帮助,但不是。我使用UserController作为用户语法(这在问题中有明确说明,在注释中也有提及)。
$scope.example = {
value: new Date(2013, 9, 22)
};
angModule.directive('moDateInput', function ($window) {
return {
require:'^ngModel',
restrict:'A',
link:function (scope, elm, attrs, ctrl) {
var moment = $window.moment;
var dateFormat = attrs.moDateInput;
attrs.$observe('moDateInput', function (newValue) {
if (dateFormat == newValue || !ctrl.$modelValue) return;
dateFormat = newValue;
ctrl.$modelValue = new Date(ctrl.$setViewValue);
});
ctrl.$formatters.unshift(function (modelValue) {
if (!dateFormat || !modelValue) return "";
var retVal = moment(modelValue).format(dateFormat);
return retVal;
});
ctrl.$parsers.unshift(function (viewValue) {
var date = moment(viewValue, dateFormat);
return (date && date.isValid() && date.year() > 1950 ) ? date.toDate() : "";
});
}
};
});
<input id="AppointmentDate" type="date" ember-view" ng-model="Patient.AppointmentDate">
$scope.Patient = {};
$scope.Patient.AppointmentDate = new Date();