Angularjs自定义验证指令异步调用实时验证

时间:2014-07-25 01:49:51

标签: ajax angularjs validation angularjs-directive angularjs-scope

我使用自定义验证指令来验证表单中的字段,验证过程包括AJAX调用以验证服务器API的用户信息。只要用户在一段时间内停止输入,我们就要验证该字段。

我有两个问题:

1.为什么下面的函数不起作用?(使用自定义指令中的链接函数)无论我在绑定的输入字段中键入多少次,都不会显示日志消息(我是非常确定我启用了日志消息显示,因为其他日志显示得非常正确)

scope.$watch(attrs.ngModel, function() {
        $log.debug("Changed to " + scope.$eval(attrs.ngModel));  
});

2.检测用户是否已停止为程序执行验证过程而停止输入的最佳方法是什么?如果用户再次开始输入,是否可以取消验证过程?

1 个答案:

答案 0 :(得分:1)

attrs.ngModel将等于html上下文中的字符串值。您要做的是将ngModel值绑定到指令的范围:

scope: {
        model: '=ngModel'
    }

然后观察指令范围:

scope.$watch("model", function() {
       console.log("Changed"); 
    });

示例:http://jsfiddle.net/BtrZH/5/