Javascript 在AngularJS中将值从服务传递给控制器

Javascript 在AngularJS中将值从服务传递给控制器,javascript,angularjs,global-variables,Javascript,Angularjs,Global Variables,我很难将更新后的值从下面的全局变量URLValue传递到控制器。它一直在打印12345。有什么想法吗? 更新后的URLValue似乎没有传递给函数watchingURL返回的结果,我不知道为什么,因为URLValue是一个全局变量 var URLValue = '12345'; factoryModule = angular.module("factoryDetails" ,[]) .factory( "factoryMain" , ["$sce" ,"$location", "$rootS

我很难将更新后的值从下面的全局变量URLValue传递到控制器。它一直在打印12345。有什么想法吗? 更新后的URLValue似乎没有传递给函数watchingURL返回的结果,我不知道为什么,因为URLValue是一个全局变量

 var URLValue = '12345';
 factoryModule = angular.module("factoryDetails" ,[])
.factory( "factoryMain" , ["$sce" ,"$location", "$rootScope", "$q",

    function($sce,$location, $rootScope,$q){
      this.watchingURL = function() { 
        $rootScope.$watch(function () {
          return  $location.path();
        },  
        function (loc) {
          console.log("$location.path() ",$location.path(loc).$$absUrl);
          temp = $location.path(loc).$$absUrl
          URLValue = 789;
        })
        return URLValue;
      };
}]);



app.controller("appController", ["$scope", "factoryMain" 
  function($scope,factoryMain) {
    $scope.name = factoryMain.watchingURL();
    console.log("function passed is" , factoryMain.watchingURL());
    $scope.$watch(factoryMain.watchingURL(), function(newval,oldval){
        $scope.name=newval
        console.log("oldval is ",oldval)
        console.log("newval is ",$scope.name) 
    });
}]);
将此服务传递给我的控制器时,我得到URLValue=12345
有什么想法吗?

首先,你真的需要它成为一个全局变量吗?其次,在控制器中,为什么不监视全局变量URLValue,而不是尝试从另一个监视函数获取该值?这段代码似乎有点混乱。尝试这些更改,并让我知道这是否解决了您的问题。嗨,我实际上没有在控制器中的手表之前,它有相同的行为。。我不想从控制器上看它,因为我需要它在一个服务中,这个服务可以将它分发给不同的控制器,所以我实际上不希望每个控制器上都有一个手表。这个控制器中的那块手表是为了获取价值而不顾一切地移动,但它没有工作。如果您可以帮助使用延迟对象,请让我知道,因为$watch是异步的,我创建它只是为了帮助您使用我推荐的方法。这能解决你的问题吗?请让我知道。