Angularjs。在datepicker中没有更新ng-model

时间:2016-07-16 10:27:13

标签: javascript jquery angularjs datepicker

我正在尝试编写jquery来使用隐藏的输入区域在文本点击上打开datepicker。此外,这在多个地方也是必需的。

以下是我的HTML。

ancestors

以下是javascript -

<div class="date-format">
    <input class="hidden-date-picker" id="hidden-date1" type="hidden" ng-model="date1"/>
    <a href="" class="date-picker" id="date1">{{date1 | date: 'dd MMM yyyy a'}}</a>
</div>
<div class="date-format">
    <input class="hidden-date-picker" id="hidden-date2" type="hidden" ng-model="date2"/>
    <a href=""  class="date-picker" id="date2">{{date2 | date: 'dd MMM yyyy a'}}</a>
</div>

从控制台输出中可以清楚地看到,在从日历中选择日期时,$ scope.date1正在被修改。但这种变化并未在html方面得到反映。

2 个答案:

答案 0 :(得分:3)

使用指令可以解决ng-model未更新的问题

您的HTML代码

<input class="hidden-date-picker" id="hidden-date1" type="hidden" ng-model="date1" customzdatetime />

添加指令&#39; customzdatetime &#39;到你的输入标签。

app.directive('customzdatetime', function () {
    return {
        restrict: 'A',
        require: 'ngModel',
        link: function (scope, element, attrs, ngModelCtrl) {
            element.datetimepicker({
                debug: false,
                format: 'DD-MM-YYYY',
                maxDate: moment()
            }).on('dp.change', function (e) {
                ngModelCtrl.$setViewValue(e.date);
                scope.$apply();
            });
        }
    };
});

答案 1 :(得分:0)

以下代码可以为您提供帮助。 对于HTML

<div class="input-group date mydatepicker" data-provide="datepicker">
    <input type="text" class="form-control" style="outline:none !important;" id="CancelDate"
    data-ng-model="CancelDate" data-ng-required="true" placeholder="Cancel Date" 
    data-ng-change="onChange()"
    data-ng-trim="true" readonly/>
    <div class="input-group-addon custumc_con">
        <i class="fa fa-calendar" aria-hidden="true"></i>
    </div>
</div>

对于角度控制器

$scope.onChange = function () {

//initialize today date
var today = new Date();

//set new date as next 10th day of today
var newDate = newDate.setDate(today.getDate() + 10);

//format date and set to angular model
$scope.CancelDate = newDate.format("MM/dd/yyyy");

// set new date in datepicker of bootstrap
    $('.mydatepicker').datepicker('update', $scope.CancelDate);
}