【问题标题】:error binding bootstrap datetimepicker to model angular错误将引导程序 datetimepicker 绑定到模型角度
【发布时间】:2015-02-14 23:28:54
【问题描述】:

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

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
    });
});

这是我的 datetimepicker 控件:

<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>

有什么想法吗?提前致谢!!

【问题讨论】:

    标签: javascript angularjs twitter-bootstrap


    【解决方案1】:

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

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

    您也可以使用AngularStrap,它还具有角度原生日期/时间选择器。

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

    【讨论】:

    • 感谢您的回答。这看起来不错,但我需要一个 datetimepicker,我可以在其中一次选择日期和时间,而不是单独的控件。
    • 我可以混合使用 reglr Bootstrap 和 AngularJS 的 datepicker 吗?我遇到了同样的问题,但我现在不想从整个项目中替换 bootstrap。
    【解决方案2】:

    这样使用你的指令:

    '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/得到这个代码

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-14
      • 1970-01-01
      • 2018-10-07
      • 2016-05-26
      • 1970-01-01
      • 2019-07-01
      相关资源
      最近更新 更多