angularjs $ watch无法正常工作

时间:2013-06-19 10:46:38

标签: angularjs angularjs-scope

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

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”,

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

1 个答案:

答案 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>