有以下AngularJS指令,该指令创建一个input元素。输入ng-change属性运行doIt()功能。

指令:

...
template: "<input ng-model='myModel' ng-change='doIt()' type='text'>" 

测试:

el.find('input').trigger('change') // Dos not trigger ng-change

现场演示(ng-Change):...

change事件,而不是使用ng-change属性。
template: "<input ng-model='myModel' type='text'>",
link: function(scope, element, attrs) {
  element.bind('change', function(event) {
    scope.doIt();
  });
}
叙知伍叙知伍提问于
看加速得中二学生回答于

可以找到ngModelController实例驱动ngModel更改回调并自己设置视图值:

it('trigger doIt', function() {
  var ngModelController = el.find('input').controller('ngModel');
  ngModelController.$setViewValue('test');
  expect($scope.youDidIt).toBe(true);
});

例子:http://plnkr.co/edit/BaWpxLuMh3HvivPUbrsd?p=preview

在查看AngularJS源代码之后,发现以下内容也有效:

it('trigger doIt', function() {
  el.find('input').trigger('input');
  expect($scope.youDidIt).toBe(true);
});

在某些浏览器中,事件看起来是不同的;input似乎适用于Chrome。

回答过的其他问题

已经购买了域名,在其他网站建立了网站,请问是否支持cname解析?解析后的网址是什么样的?

支持cname解析

解析后的网址看你其他网站建立的网站的提示

Gitlab CI如何通过SSH部署应用程序

举个例子,假设您已经安装了需求的服务器,并且您希望使用ssh部署到该服务器。 image: ubuntu:latest stages: - deploy deploy_QA: stage: deploy environment: name: Stagin...... 展开详请

已经收到备案审核通过的短信,但是工信部网站还没查到备案信息?

如何基于另一列选择多行?

下面是R基的一种方法subset and ave(借用@steveb的数据): treatments <- LETTERS[1:5] subset(treatment.df, as.logical(ave(treatment, id, FUN = function(x) all...... 展开详请

如何使用SPECTS 2对测试进行分组?

已采纳
在specs2中,没有分层套件的概念。规范只是一个示例列表。即使您将它们分组xxx should yyy,这只会影响控件中显示示例的方式,或多或少的缩进。 另一方面,有一些方法可以使用specs2组织规范: 引用 标签 参考 您可以通过创建引用其他规范的顶级规范来创建规范层次结...... 展开详请

jQuery POST不使用IE 11提交表单值。

不要担心,您尝试用序列化()方法发送数据,我希望您的问题可以解决,尝试一下。 <!DOCTYPE html> <html> <head> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome...... 展开详请

关于作者

所属标签

扫码关注云+社区