错误绑定引导日期时间选取器到模型角度

error binding bootstrap datetimepicker to model angular

本文关键字:模型 选取 时间 绑定 日期 错误      更新时间:2023-09-26

我在将引导日期时间选择器绑定到我的模型中时遇到问题。最初一切正常,问题是当我使用控件选择日期和时间时,模型永远不会更新。但是,如果我手动设置日期输入,那么绑定也可以工作。这是我的角度控制器:

routerApp.controller('CalendarCtrl',function($scope){
    $scope.dateValue = "01/01/2000 12:00";
    $('.form_datetime').datetimepicker({
        weekStart: 1,
        todayBtn:  1,
        autoclose: 1,
        todayHighlight: 1,
        startView: 2,
        forceParse: 0,
        showMeridian: 1
    });
});

这是我的日期时间选择器控件:

<form action="" class="form-horizontal"  role="form">
        <fieldset>
            <legend>Test</legend>
            <div class="form-group">
                <label for="dtp_input1" class="col-md-2 control-label">DateTime Picking</label>
                <div class="input-group date form_datetime col-md-5" data-date="1979-09-16T05:25:07Z" data-date-format="dd/mm/yyyy hh:ii" data-link-field="dtp_input1">
                    <input class="form-control" size="16" type="text" data-ng-model="dateValue">
                    <span class="input-group-addon"><span class="glyphicon glyphicon-remove" ></span></span>
                    <span class="input-group-addon"><span class="glyphicon glyphicon-th"></span></span>
                </div>
                <input type="hidden" id="dtp_input1" value="" /><br/>
            </div>
            Date: {{dateValue}}
        </fieldset>
    </form>

知道吗?提前感谢!!

我也遇到过这个问题。我的解决方案是使用包含本机AngularJS日期选择器的angular-ui引导库。

演示:http://angular-ui.github.io/bootstrap/#/datepicker

或者,您可以使用AngularStrap,它也有一个角度原生日期/时间选择器。

演示:http://mgcrea.github.io/angular-strap/##datepickers

以这种方式使用你的指令:

'use strict';
var app = angular.module('App', []);
app.directive('datetimepicker', function(){
    return {
        require: '?ngModel',
        restrict: 'A',
        link: function(scope, element, attrs, ngModel){
            if(!ngModel) return; // do nothing if no ng-model
            ngModel.$render = function(){
                element.find('input').val( ngModel.$viewValue || '' );
            }
            element.datetimepicker({ 
                language: 'it' 
            });
            element.on('dp.change', function(){
                scope.$apply(read);
            });
            read();
            function read() {
                var value = element.find('input').val();
                ngModel.$setViewValue(value);
            }
        }
    }
});

我得到这个代码 http://embed.plnkr.co/Cj1KXL/