Javascript AngularJS-Can';无法在视图中显示日期对象

Javascript AngularJS-Can';无法在视图中显示日期对象,javascript,angularjs,html,date,Javascript,Angularjs,Html,Date,我试图在视图中显示日期对象 我遵循这些文件: 但是没有成功 我确实有相同的代码:(编辑:删除了controllerAs语法并添加了$scope) 但我还是犯了一个错误 错误:[ngModel:datefmt]预计2013-10-22为日期 有人知道是什么导致了这个问题吗?我试着在网上查找,但我找到的所有答案都是日期对象无效,我很确定我的不是。(或者是…) 编辑: 由于很多人在理解我的问题时遇到困难,让我用一个JSFIDLE来说明: 在输出中,我看到的是“dd-mm-2013”,而不是“22-10

我试图在视图中显示日期对象

我遵循这些文件:

但是没有成功

我确实有相同的代码:(编辑:删除了controllerAs语法并添加了$scope)

但我还是犯了一个错误

错误:[ngModel:datefmt]预计
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();