【发布时间】:2015-02-20 09:48:44
【问题描述】:
我在 AngularJS 中创建了一个日期时间范围指令。我正在使用 dangrossman/bootstrap-daterangepicker 插件来获取日期时间范围日历。该指令工作正常,模型值正在更改,但视图没有更新。
element.data('daterangepicker').setStartDate(val.start);
element.data('daterangepicker').setEndDate(val.end);
谁能告诉我一些解决方案。
我创建的指令如下所示
脚本
app.directive('dateTimePicker', function($parse, $compile) {
return {
restrict: "E",
replace: true,
transclude: false,
compile: function(element, attrs) {
var modelAccessor = $parse(attrs.ngModel);
var html = "<form>" +
"<div class='form-group'>" +
"<div class='input-group'>" +
"<span class='input-group-addon'>" +
"<i class='fa fa-calendar'></i>" +
"</span>" +
"<input type='text' name='reservation' id='reservationtime' class='form-control' value=''/>" +
"</div>" +
"</div>" +
"</form>";
var newElem = $(html);
element.replaceWith(newElem);
return function(scope, element, attrs, controller) {
element.on('apply.daterangepicker', function(ev, picker)
{
var date = {};
date.start = picker.startDate;
date.end = picker.endDate;
scope.$apply(function (scope) {
modelAccessor.assign(scope, date);
});
});
element.daterangepicker({
timePicker: true,
timePickerIncrement: 30,
format: 'MM/DD/YYYY h:mm A'
});
scope.$watch(modelAccessor, function(val)
{
console.log(val);
if(!_.isUndefined(val))
{
element.data('daterangepicker').setStartDate(val.start);
element.data('daterangepicker').setEndDate(val.end);
}
});
};
}
};
});
html
<date-time-picker ng-model="dateTimeRange"></date-time-picker>
【问题讨论】:
标签: javascript angularjs twitter-bootstrap datetimepicker angular-directive