如何在Angular Directive测试中的输入字段中访问值?

时间:2014-04-16 08:10:19

标签: angularjs

我的角度控制器有一个Jasmine测试,具有以下功能:

function compileDirective() {
        var body = '<div class="col-sm-4">' + 
'<input id="email" type="email" ng-model="form.email" value="test@test.com" field-match="emailsMatch()">' + '</div>';
        var tpl = '<form name="myForm">' + body  + '</form>';

        inject(function($compile) {
            var form = $compile(tpl)(scope);
            elem = form.find('div');
        });
        function emailsMatch() {
          //do some logic in here, depending on the value of the email field
        }

        scope.$digest();
    }

我希望能够在compileDirective函数(emailsMatch())中创建另一个函数,该函数查看输入字段中的值并使用它来执行某些逻辑。我不知道如何访问输入字段。我有一个elem的句柄,这是整个html开头的。如何查看输入字段的值?

1 个答案:

答案 0 :(得分:1)

要访问emailsMatch功能,您应该将其作为scope的一部分。另一方面,如果您在标记中写了ng-model="form.email",我认为您有formemail中的1}}(内置scope属性)属性。所以你需要这样的东西:

scope.emailsMatch = function() {
   console.log( scope.form.email ); //should print value of the <input>
};