Javascript 角度,观察$scope的变化

Javascript 角度,观察$scope的变化,javascript,angularjs,Javascript,Angularjs,我试图观察一个作用域,以便每次都能重新运行一个函数,但它似乎并没有像我设计的那样工作 所以我只有 $scope.user = userFactory.getUser(); 我的用户被从工厂拉进来 然后,在一个点击功能中,我通过让用户点击这样的按钮将其更改为其他内容 $scope.swapUserTest = function(){ $scope.user = {'name' : 'new'} } 然后我试着观察它是否发生了变化——这不仅仅是点击,将来它将来自多个不同的东西,所以我希望

我试图观察一个作用域,以便每次都能重新运行一个函数,但它似乎并没有像我设计的那样工作

所以我只有

 $scope.user = userFactory.getUser();
我的用户被从工厂拉进来

然后,在一个点击功能中,我通过让用户点击这样的按钮将其更改为其他内容

 $scope.swapUserTest = function(){
  $scope.user = {'name' : 'new'}
}
然后我试着观察它是否发生了变化——这不仅仅是点击,将来它将来自多个不同的东西,所以我希望在它发生变化时,我的函数会启动。大概是这样的:

$scope.$watch($scope.user, function() {
  console.log("changed")
});

所以我假设,只要$scope.user更改,就会触发,但它似乎只有在从工厂第一次进入控制器时才会触发。我可以在这里提供一些指导。谢谢大家!

您可以指定对象的属性:

$scope.$watch('user', function(newValue, oldValue) {
    // do something
});
或者,您可以指定一个函数,该函数返回您正在监视的值:

$scope.$watch(function () {
    return $scope.user;
}, function(newValue, oldValue) {
    // do something
});

您可以指定对象的属性:

$scope.$watch('user', function(newValue, oldValue) {
    // do something
});
或者,您可以指定一个函数,该函数返回您正在监视的值:

$scope.$watch(function () {
    return $scope.user;
}, function(newValue, oldValue) {
    // do something
});

要监视作用域的属性,请将其设置为$watch函数的第一个参数。注意:当您监视一个对象时,只有当整个对象发生更改时,才调用您的监视,而不是当该对象的属性发生更改时。 例如:

要“深度监视”对象,请将$watch的第三个参数设置为true。 $watch(“属性名称”,回调函数,true)

或者,如果要查看对象的特定属性,请使用

$scope.$watch("user.email", function(email) {
    console.log("user.email watch called with:", email);
});
/* 
outputs both 
user.email watch called with: jack@rocks.com
users.js:60 user.email watch called with: jim@beam.com
*/

要监视作用域的属性,请将其设置为$watch函数的第一个参数。注意:当您监视一个对象时,只有当整个对象发生更改时,才调用您的监视,而不是当该对象的属性发生更改时。 例如:

要“深度监视”对象,请将$watch的第三个参数设置为true。 $watch(“属性名称”,回调函数,true)

或者,如果要查看对象的特定属性,请使用

$scope.$watch("user.email", function(email) {
    console.log("user.email watch called with:", email);
});
/* 
outputs both 
user.email watch called with: jack@rocks.com
users.js:60 user.email watch called with: jim@beam.com
*/
$scope.$watch('user',function(){$scope.$watch('user',function()){