我认为AngularJS中的表单验证会以某种方式延迟,这很烦人。我在指令的链接功能中有以下代码:
console.log(scope.signinForm.$invalid); // TRUE
scope.signin.email = 'some@email.com';
scope.signin.password = 'test';
console.log(scope.signinForm.$invalid); // still TRUE, should be FALSE at this point
所以我继续使用了setTimeout函数:
var myFunction = function () {
console.log(scope.signinForm.$invalid); // FALSE, which is correct
};
console.log(scope.signinForm.$invalid); // TRUE
scope.signin.email = 'some@email.com';
scope.signin.password = 'test';
setTimeout(myFunction, 500);
有人可以告诉我我需要立即更新$ invalid吗?
谢谢,
史蒂芬
答案 0 :(得分:1)
您可以尝试应用范围:
console.log(scope.signinForm.$invalid); // TRUE
scope.signin.email = 'some@email.com';
scope.signin.password = 'test';
scope.$apply();
console.log(scope.signinForm.$invalid);