我写了这段代码来观察密码字段的变化, 我的代码是
var Controllers = angular.module('myapp');
Controllers.controller('SignUpCtrl', function ($scope,$http,$location) {
$scope.$watch($scope.password, validatePasswordFun);
function validatePasswordFun(newValue,oldValue,scope){
console.debug("Test");
}
});
但我面临的问题是: 在页面加载时,它在firebug控制台中打印“test”,
之后如果我在密码字段中输入文本/密码,它就不会执行该功能。
答案 0 :(得分:4)
你正在以错误的方式观看它应该像
那样的字符串值var Controllers = angular.module('myapp');
Controllers.controller('SignUpCtrl', function ($scope,$http,$location) {
$scope.$watch('password', validatePasswordFun);
function validatePasswordFun(newValue,oldValue,scope){
console.debug("Test");
}
});
内部监视正在使用$ parse服务,该服务需要使用属性名称,以便在字符串'password'中包装,以便$ parse可以正常工作
- 编辑工作HTML
<!DOCTYPE html>
<html ng-app="Demo" >
<head lang="en">
<meta charset="utf-8">
<title>Custom Plunker</title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.5/angular.min.js"></script>
</head>
<body ng-controller="test" >
<input type="password" ng-model="password" />
<script>
var app = angular.module('Demo', []);
function test($scope) {
$scope.$watch('password', function (newvalue, oldvalue) {
alert(newvalue);
});
}
</script>
</body>
</html>