0

我写了这段代码来观察密码字段的变化,我的代码是

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");
        }
});

但我面临的问题是:在页面加载时,它会在萤火虫控制台中打印“测试”,

之后,如果我在密码字段中输入文本/密码,它不会执行该功能。

4

1 回答 1

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 服务,该服务需要属性名称,因此您将其包装在字符串“密码”中,以便 $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>
于 2013-06-19T10:49:51.043 回答