我应该如何在茉莉花单元测试中访问元素的angularjs $ ngModelController?

JJo*_*ton 8 jasmine angularjs angularjs-directive

我目前正在使用它directiveElement.data("$ngModelController")来访问元素$ngModelController,如下例所示.

describe("directiveElement", function () {
  it("should do something with ngModelController", inject(function($compile, $rootScope) {
    var directiveElement = $compile("<input ng-model="myNgModel" customDirective type="text"></input>")($rootScope);
    $rootScope.$digest();
    var ngModelCtrl = directiveElement.data("$ngModelController");
    ngModelCtrl.$modelValue = "12345";
    // do rest of test
  }));
});
Run Code Online (Sandbox Code Playgroud)

但是,我想知道是否有更好的访问权限$ngModelController,或者访问是否$ngModelController是一个坏主意?

jon*_*onc 15

你也可以这样做directiveElement.controller('ngModel').

我当然认为有合理的测试原因可以解释为什么你需要处理这个,尽管更常见的方法是通过表单获取句柄(例如https://github.com/angular/angular.js/blob) /master/test/ng/directive/formSpec.js)