对于上下文,我正在尝试在angularjs中编写一些自定义表单验证。我从字段附带的一些默认消息开始。如果错误为false,则消息显示为灰色(正常信息),如果错误为真(消息显示为红色(警告)。验证检查我已省略将更改消息字符串并将错误设置为true(如果检查失败)所以每次用户运行validate函数时,我都需要先将$ scope.registerMessage重置为默认的表单消息,然后再次运行检查,这样任何修复的错误都不会保留错误消息。代码目前有效但我已经我被迫定义了两次默认的消息对象,我确信这是不必要的,但我可以试试,我不能让它以任何其他方式工作。
app.controller('loginCtrl', function ($scope) {
// default form messages
$scope.registerMessage = {
username : {
message : '',
error : false
},
firstName : {
message : '',
error : false
},
lastName : {
message : '',
error : false
},
email : {
message : 'You must use a valid email to register.',
error : false
},
password : {
message : 'Your password must be atleast six characters long and contain a number or special character.',
error : false
},
reEnterPassword : {
message : '',
error : false
}
};
$scope.validate = function (callback) {
// reset to default messages before validation
$scope.registerMessage = {
username : {
message : '',
error : false
},
firstName : {
message : '',
error : false
},
lastName : {
message : '',
error : false
},
email : {
message : 'You must use a valid email to register.',
error : false
},
password : {
message : 'Your password must be atleast six characters long and contain a number or special character.',
error : false
},
reEnterPassword : {
message : '',
error : false
}
};
// Form validation Regex checks happen here
};
});
我尝试将默认值分配给非$ scope对象变量,然后将$ scope.registerMessage设置为等于validate变量内外的变量,但该变量以某种方式分配了新值。任何想法如何写,没有重复?
答案 0 :(得分:1)
试试这个
app.controller('loginCtrl', function ($scope) {
function defaultMessage() {
// default form messages
$scope.registerMessage = {
username : {
message : '',
error : false
},
firstName : {
message : '',
error : false
},
lastName : {
message : '',
error : false
},
email : {
message : 'You must use a valid email to register.',
error : false
},
password : {
message : 'Your password must be atleast six characters long and contain a number or special character.',
error : false
},
reEnterPassword : {
message : '',
error : false
}
};
}
$scope.validate = function (callback) {
defaultMessage();
};
//Init
defaultMessage();
});