我正在使用一个引导日历日期选择器来操作和修改一个<input type="text">元素。
如果我使用ng-change="myAngularExpression()"它,只要单击文本框就会调用该函数。输入实际更改后如何调用函数?
在我的具体情况下,用户在显示 MM/DD/YYYY 的文本框中单击,然后下拉日历出现,然后执行角度表达式,然后用户更改值并且在单击元素并返回之前没有任何反应在上面。
我正在使用一个引导日历日期选择器来操作和修改一个<input type="text">元素。
如果我使用ng-change="myAngularExpression()"它,只要单击文本框就会调用该函数。输入实际更改后如何调用函数?
在我的具体情况下,用户在显示 MM/DD/YYYY 的文本框中单击,然后下拉日历出现,然后执行角度表达式,然后用户更改值并且在单击元素并返回之前没有任何反应在上面。
我假设您使用的是基于 jQuery 的 Bootstrap 日期选择器。不幸的是,将基于 jQuery 的 Bootstrap 小部件与 Angular 混合使用很少能奏效。
更好的选择是使用UI Bootstrap,它是完全用 Angular 编写的 Bootstrap 小部件的集合。例如,这是一个datepicker。
一旦您将 Angular 用于您的小部件(使用 UI Bootstrap),监视日期的更改就变得如此简单$scope.$watch():
$scope.$watch('date', function() { /* ... */ });
完整示例:
var app = angular.module('app', ['ui.bootstrap']);
app.controller('Main', function($scope) {
$scope.date = new Date();
// watch date for changes
$scope.$watch('date', function(newValue, oldValue) {
if (newValue !== oldValue)
{
$scope.message = 'Date changed from ' + oldValue + ' to ' + newValue;
}
});
});
<div ng-app="app">
<div ng-controller="Main">
<datepicker ng-model="date"></datepicker>
<div ng-bind="message"></div>
</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.2/angular.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-bootstrap/0.13.0/ui-bootstrap-tpls.min.js"></script>
有人可能能够提供一个答案,允许基于 jQuery 的日期选择器与 Angular 一起“足够好”地工作,但这是一条很滑的路。
怎么样ng-keydown?这样,只有当您按下按键时,输入才会改变。
<input ng-keydown='someAwesomeMethodHere()'/>