Angularjs 对象没有方法$watch

Angularjs 对象没有方法$watch,angularjs,angularjs-scope,Angularjs,Angularjs Scope,我的angular应用程序有一个小问题(我还在学习中!),我有一个控制器,试图在变量上添加$watch语句。以下是适用的代码片段: var controllerId = 'header'; angular.module('app').controller(controllerId, ['$rootScope', 'common', 'routes', 'authorization', header]); function header($route, config, route

我的angular应用程序有一个小问题(我还在学习中!),我有一个控制器,试图在变量上添加$watch语句。以下是适用的代码片段:

    var controllerId = 'header';
angular.module('app').controller(controllerId,
    ['$rootScope', 'common', 'routes', 'authorization', header]);

function header($route, config, routes, authorization) {
    var vm = this;

        vm.$watch(function () { return authorization.currentUser.firstName; },
        function (value) {
            vm.userName = value;
        });
}();
其中授权是我创建的自定义服务。当用户(在另一个控制器上)提供名字时,它将更新名字

我只是不确定我遗漏了什么(关于$watch声明)

谢谢,
Nick

$watch
$scope
上的一个函数

但您需要考虑一下,在服务中不能监视一个变量。您只能监视分配给$范围的变量。

如果有这样一个变量

$scope.userName="test"
$scope.$watch('userName',function (){
//do your work here..
});
你可以这样看

$scope.userName="test"
$scope.$watch('userName',function (){
//do your work here..
});

$watch
$scope
上的一个函数

但您需要考虑一下,在服务中不能监视一个变量。您只能监视分配给$范围的变量。

如果有这样一个变量

$scope.userName="test"
$scope.$watch('userName',function (){
//do your work here..
});
你可以这样看

$scope.userName="test"
$scope.$watch('userName',function (){
//do your work here..
});

$watch
$scope
上的一个函数

但您需要考虑一下,在服务中不能监视一个变量。您只能监视分配给$范围的变量。

如果有这样一个变量

$scope.userName="test"
$scope.$watch('userName',function (){
//do your work here..
});
你可以这样看

$scope.userName="test"
$scope.$watch('userName',function (){
//do your work here..
});

$watch
$scope
上的一个函数

但您需要考虑一下,在服务中不能监视一个变量。您只能监视分配给$范围的变量。

如果有这样一个变量

$scope.userName="test"
$scope.$watch('userName',function (){
//do your work here..
});
你可以这样看

$scope.userName="test"
$scope.$watch('userName',function (){
//do your work here..
});

虽然您可以在控制器的作用域上观看某个项目,但这样做通常不是一个好主意,请阅读本文。我建议您从父作用域广播一个事件(并且由于它看起来像是一个用户登录事件,可能在您想要的地方),并且在控制器的作用域上,您可以处理引发的事件

提出一项活动:

$rootScope.$broadcast('eventName', {prop1: 'some data'});
并收听broadcase事件:

$scope.$on('eventName', function (event, data) {
    var temp = data.prop1;
});

虽然您可以在控制器的作用域上观看某个项目,但这样做通常不是一个好主意,请阅读本文。我建议您从父作用域广播一个事件(并且由于它看起来像是一个用户登录事件,可能在您想要的地方),并且在控制器的作用域上,您可以处理引发的事件

提出一项活动:

$rootScope.$broadcast('eventName', {prop1: 'some data'});
并收听broadcase事件:

$scope.$on('eventName', function (event, data) {
    var temp = data.prop1;
});

虽然您可以在控制器的作用域上观看某个项目,但这样做通常不是一个好主意,请阅读本文。我建议您从父作用域广播一个事件(并且由于它看起来像是一个用户登录事件,可能在您想要的地方),并且在控制器的作用域上,您可以处理引发的事件

提出一项活动:

$rootScope.$broadcast('eventName', {prop1: 'some data'});
并收听broadcase事件:

$scope.$on('eventName', function (event, data) {
    var temp = data.prop1;
});

虽然您可以在控制器的作用域上观看某个项目,但这样做通常不是一个好主意,请阅读本文。我建议您从父作用域广播一个事件(并且由于它看起来像是一个用户登录事件,可能在您想要的地方),并且在控制器的作用域上,您可以处理引发的事件

提出一项活动:

$rootScope.$broadcast('eventName', {prop1: 'some data'});
并收听broadcase事件:

$scope.$on('eventName', function (event, data) {
    var temp = data.prop1;
});

我相信这就是我所寻找的。明天当我有机会的时候,我会研究这个问题,如果答案是正确的,我会把它标记为答案。这个解决方案对你有帮助吗?我相信这就是我所寻找的。明天当我有机会的时候,我会研究这个问题,如果答案是正确的,我会把它标记为答案。这个解决方案对你有帮助吗?我相信这就是我要寻找的。明天当我有机会的时候,我会研究这个问题,如果答案正确,我会把它标记为答案。这个解决方案对你有帮助吗?我相信这就是我要寻找的。明天当我有机会的时候,我会研究这个问题,如果答案正确,我会把它标记为答案。这个解决方案对你有帮助吗?