Angular$scope未按预期工作.正在尝试在控制器$scope和$scope.function作用域中分配对象值
Angular $scope not working as expected. Trying to assign object values in a controller $scope and a $scope.function scope
对于上下文,我正在尝试用angularjs编写一些自定义表单验证。我从字段附带的一些默认消息开始。如果error为false,则消息显示为灰色(正常信息),如果error为true(消息显示为红色(警告))。我省略的验证检查将更改消息字符串并将error设置为true(如果检查失败)。因此,每次用户运行验证函数时,我都需要它首先将$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对象变量,然后在validate函数内外将$scope.registerMessage设置为该变量,但该变量不知何故被分配了新值。有什么想法可以在没有复制的情况下写出来吗?
试试这个
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();
});
相关文章:
- 监视函数从服务返回不起作用,但作用域函数起作用
- 将作用域存储在JSON中
- 从控制器继承了隔离的作用域以生成可重用的指令
- 从ng模板访问作用域
- $location.search() - 如何在 $scope.$watch 函数中使用作用域中的参数
- AngularJS-由$scope创建的作用域何时执行$new()已删除.垃圾收集器或Angular负责处理它吗
- $scope变量在指令隔离作用域中未定义
- 为什么从指令中更改外部作用域需要 scope.$apply(),即使我将范围选项设置为 false
- 在 $scope.$watch 中更新时,独立作用域绑定不起作用
- 作用域变量未在$Scope中更新$看
- 在指令作用域和控制器$scope之间共享数据
- 从指令's使用$scope的独立作用域$父级不更新模板
- 为什么Angular要把ng-scope类放在一个没有附加作用域的元素上?
- 在angular控制器中使用$scope值来创建其他作用域值
- 使用$scope隔离作用域功能.美元的新产业
- 在没有$scope的指令中引用作用域变量
- 如果没有$scope.$apply,修改作用域将不起作用
- 从AngularJs外部更新作用域,而不使用angular.element.scope"
- Angular$scope未按预期工作.正在尝试在控制器$scope和$scope.function作用域中分配对象值
- AngularJS -如何从指定作用域的指令中访问$scope