从自定义指令内部手动触发ngChange

让我调整一下

我想构建与普通输入字段具有相同ng-change语法的自定义指令。假设我有一个这样的指令:

;(function() {
  'use strict';
  angular.module('myMod', []);
  angular.module('myMod').directive('myDir', myDirDirective);

  function myDirDirective() {
    return {
      restrict: 'E',
      template: '
        <input ng-change="checkInput1()" type=...>
        <input ng-change="checkInput2()" type=...>
      ',
      controllerAs: 'myDirDirective',
      controller: myDirController,
      require: 'ngModel',
      scope: {},
      bindToController: {
        model: '='
      }
    };
  }

// Controller goes here...

})(); // EOF

现在我想定义输入检查方法,例如

function checkInput1() {
  ...
  if( <changes in input 1 are legit> ) {
    fireOuterNgChange();
  }
}
function checkInput2() {
  ...
  if( <changes in input 2 are legit> ) {
    fireOuterNgChange();
  }
}

最后,我希望能够使用我的自定义指令,例如:

<myDir ng-change="doSomethingAfterSomethingChanged()">
  ...
</myDir>

一个简单的用例是一个时间选择器,其中有几个输入字段,用于小时:分钟:秒:毫秒。仅举一个例子。我尝试了不同的方法但没有成功;我怎样才能做到这一点?

新丸

因此,在这里您需要执行以下两项操作:

  1. 拦截内部指令<input>元素上的更改
  2. 将这些更改转发到您的自定义项的父项<my-dir>

对于(1),您只需按照您说的做即可:您在指令的作用域(scope.checkInput1 = function() { ... })中注册回调

然后,要将事件转发给父对象(最终模仿<input ng-change>行为),您将需要在指令的隔离范围中声明一个表达式绑定,如下所示:

scope: {
  onDateChange: '&'
}

在父控制器上,假设您$scope.onDirectiveDateChange = function() { ... }在范围中声明了一些,只需将回调传递到自定义指令中,如下所示:

<my-dir on-date-change="onDirectiveDateChange()"></my-dir>

然后从指令的调用它checkInput2

scope.onDateChange(); // This will call parent's "onDirectiveDateChange()" if defined

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何手动触发对象的自定义带注释的验证规则?

手动设置自定义图例形状

Prolog手动或自定义标签

手动调用PlayFramework自定义错误页面

手动设置自定义验证消息时,如何触发 HTML5 验证错误弹出窗口?

“手动” Woocommerce 自定义订单状态的奇怪显示样式

使用没有默认构造函数的自定义验证器手动验证

Twig:如何在自定义函数中手动转义?

手动加载我自定义的节点模块(Angular 4.x)

如何手动调用自定义过滤器?

在Wordpress中以自定义大小手动裁剪图像

Card.io 自定义键盘、手动输入画面、扫描后画面

创建一个自定义的“ ls”,但仅用于手动使用

手动打开可序列化对象的自定义检查器

如何在自定义Android XML中手动查找“ @string / ...”样式引用

如何防止不可自定义的应用覆盖手动更改的文件?

仅在WooCommerce Admin单个订单的手动订单中显示产品自定义字段

如何在Angular中手动设置自定义验证器

如果需要更多自定义功能,可以手动编写HTML表单吗?

RESTful服务上的自定义手动Oauth2身份验证

在plone自定义页面中手动渲染富文本小部件

如何/如何手动更改自定义UIView的框架?

Access 2016 VBA-创建控件的自定义集合,手动指定控件的名称

选择性/手动添加自定义属性?

手动图例中的自定义标记边缘样式

如何手动将Apollo自定义标量映射到客户端类型

如何手动解码符合自定义协议的项目数组?

如何从foreach数组循环中构造手动自定义字段?

Django自定义表单字段布局,无需手动重做整个表单