Javascript 在AngularJS中将值从服务传递给控制器
我很难将更新后的值从下面的全局变量URLValue传递到控制器。它一直在打印12345。有什么想法吗? 更新后的URLValue似乎没有传递给函数watchingURL返回的结果,我不知道为什么,因为URLValue是一个全局变量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
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是异步的,我创建它只是为了帮助您使用我推荐的方法。这能解决你的问题吗?请让我知道。