Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ui引导计时器选择器和ng模型值转换器_Javascript_Json_Angularjs_Angular Ui Bootstrap - Fatal编程技术网

Javascript ui引导计时器选择器和ng模型值转换器

Javascript ui引导计时器选择器和ng模型值转换器,javascript,json,angularjs,angular-ui-bootstrap,Javascript,Json,Angularjs,Angular Ui Bootstrap,我的服务器端json使用“HH:mm:ss”存储时间数据。 我使用UI Bootsrap TimePicker让用户输入时间 我使用ngModelController的$parser和$formatters从服务器端json映射到前端timepickerUI。从UI到数据的转换按预期进行,但是我很难将数据转换回UI 错误消息如下所示: 'Timepicker指令:“ng model”值必须是日期对象,自1970年1月1日起的毫秒数或表示RFC2822或ISO 8601日期的字符串。' 这是HTM

我的服务器端json使用“HH:mm:ss”存储时间数据。 我使用UI Bootsrap TimePicker让用户输入时间

我使用ngModelController的$parser和$formatters从服务器端json映射到前端timepickerUI。从UI到数据的转换按预期进行,但是我很难将数据转换回UI

错误消息如下所示: 'Timepicker指令:“ng model”值必须是日期对象,自1970年1月1日起的毫秒数或表示RFC2822或ISO 8601日期的字符串。'

这是HTML标记

<timepicker ng-model="HotelProperties.CheckOutTime" time-span-converter hour-step="hstep" minute-step="mstep" show-meridian="false"></timepicker>

计时器选择器希望您传入日期对象,而不是字符串

快速帮助:-


你的小时:分钟是字符串,所以它引发了这样一个错误,我只是 想办法摆脱它。简单的继续安装MomentJS 格式如下$scope.timing=moment('09:30am','hh:mm A')。格式()

几乎没有长时间的解释:- 从时间选择器 您可能需要使用AngularUI中的时间选择器(ui.bootstrap.Timepicker)

ng模型:提供时间状态的日期对象

我正在使用将日期从字符串格式化为日期对象


如果需要,您可以使用相同的库将时间转换回字符串。

您的小时:分钟是字符串,因此它会引发这样一个错误,我只是想如何消除它。简单地安装MomentJS和格式如下$scope.timing=momente('09:30am','hh:mma').format();它解决了你的问题
.directive("timeSpanConverter", ['$filter',function($filter) {
        return {
            restrict: 'A',
            require: 'ngModel',
            link: function(scope, element, attr, ngModelCtrl) {
                function fromJson(value) {

                    if (!value) return new Date();

                    var parts = value.split(':');
                    var hh = Number(parts[0]);
                    var mm = Number(parts[1]);

                    var date = new Date();
                    date.setHours(hh);
                    date.setMinutes(mm);

                    return date;
                }

                function fromUser(value) {
                    var time = $filter('date')(value, "HH:mm:00");
                    return time;
                }

                ngModelCtrl.$parsers.push(fromUser);
                ngModelCtrl.$formatters.push(fromJson);
            }

        }
    }])