我有一个ng-repeat,每一行都有多个UI-Bootstrap日期选择器。当选择日期并且选择器关闭时,我正在尝试调用控制器中的函数。我尝试过使用UI-Event来捕获blur事件,但是当这个事件被调用时,模型还没有更新。我的问题是,当选择器关闭时,我如何获得所选的日期?我可以做像ui-event="{ blur : 'myBlurFunction( $event, this.text)' }
这样的事情吗?或者有没有其他方法可以通过onClose事件来获取数据?
<li ng-repeat="....">
<div ng-click="openEditStartCal($event, ticket)">
<input ui-event="{ blur : 'blurredStartDate( $event, ticket, this.text)' }"
type="text"
starting-day="2"
show-button-bar="false"
show-weeks="false"
class="form-control addTicketDateInput"
datepicker-popup="dd MMM"
ng-model="ticket.StartDate"
is-open="startEditTicketOpened && currentTicketUpdating == ticket.TicketId"
min-date="{{today()}}"
max-date="'2015-06-22'"
datepicker-options="dateOptions"
date-disabled="disabled(date, mode)"
ng-required="true" close-text="Close" />
</div>
发布于 2014-06-23 05:44:09
我已经通过使用ng-change="myChangeFunction()"
解决了这个问题。
发布于 2014-11-19 05:30:01
你可以在你的控制器中为你的date变量设置一个$watch。
$scope.$watch('ticket.StartDate',function(){
var date = $scope.ticket.StartDate;
});
发布于 2014-08-22 02:07:23
我也在处理这个问题,onChange不会为我做这件事,所以我去了ui bootstrap .js并添加了一些东西。然后,我可以通过on-close属性在HTML中设置要调用的函数。
<input type="text" on-close="dateClosed()" ng-model="date" datepicker-popup="dd.MM.yyyy" is-open="dateOpened" ng-click="dateOpened=true" />
然后您需要在以下位置更改ui-bootstrap.js
.directive('datepickerPopup' ... function(...) ... return { ...
scope: { ... , onClose: '&' }
有3个选项如何关闭选择器日期选择,单击别处或完成按钮。您可以很容易地找到它,这是isOpen设置为false的唯一位置
scope.isOpen = false;
然后我只在这3个地方调用一个函数,在那里我从属性调用函数
scope.onClosing = function () {
if (angular.isDefined(attrs.onClose))
scope.onClose();
}
如果你想要ui-bootstrap.js PM我,我只在tpls版本中做过。
https://stackoverflow.com/questions/24351501
复制相似问题