javascript - 在文本输入更改后运行的 AngularJS 指令

标签 javascript angularjs html angularjs-directive angularjs-ng-change

我正在使用一个引导日历日期选择器来操作和修改 <input type="text">元素。

如果我使用 ng-change="myAngularExpression()"单击文本框后,它会立即调用该函数。 输入实际发生变化后,如何调用函数?

在我的具体情况下,用户单击显示 MM/DD/YYYY 的文本框,下拉日历出现,然后 Angular 表达式执行,然后用户更改值,直到他们单击元素并返回它。

最佳答案

我假设您使用的是基于 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 一起“足够好”地工作,但这是一条湿滑的道路。

关于javascript - 在文本输入更改后运行的 AngularJS 指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31271275/

相关文章:

javascript - 如果 php 返回 true 则重定向页面 jQuery ajax

javascript - 如何限制函数签名只接受特定的类型参数对

angularjs - ng-options 在具有预选值时不绑定(bind)

angularjs - Jerky 在 Chrome 上使用 ngAnimate 中断了 CSS 转换

javascript - 头部异步 JS 加载

html - float 在两个元素上

javascript - 如何使所有元素在 javascript 中不可见?

c# - HttpContext.Current.GetOwinContext().Authentication.Challenge() 不打开 adfs 页面

html - 如何为 svg 提供响应式设计?

javascript - 访问文本字段的兄弟变量