将服务$ watch的值传递给AngularJS中的控制器

时间:2018-07-17 18:57:49

标签: javascript angularjs watch

我试图将值从服务$watch传递到另一个模块中的控制器。但是,它始终是temp变量的初始值,而不是$watch更新后的temp修改值。

如何为控制器提供新的temp值?最初,全局变量temp设置为null,并且在更新$watch时,将temp定义为来自$watch的更新值。

这应该反映在zklm控制器中,但是zklm仅选择初始值null

abc = angular.module("abcModule", [])
abc.factory("abcMain", ["$location", "$rootScope", "$q",
function("$location", "$rootScope", "$q") {
  function watchingURL() {
    var temp = null
    return {
      urlUpdatedValue: $rootScope.$watch(function() {
        return $location.path();
      }, function(loc) {
        console.log("$location.path() ", $location.path(loc).$$absUrl)
        temp = $location.path(loc).$$absUrl
      })
    }
  }
}
return {
  watchingURL: watchingURL
}
}])

cde = angular.module("cdeModule", ["abcModule", "zklmModule"])
abcdef.run("abcMain", function(abcMain) {
  abcMain.watchingURL()
})

zklm = angular.module("zklmModule", ["abcModule"])
zklm.controller("zklmController", ["abcMain", function(abcMain) {
  console.log("temp is", zklmController.watchingURL())
}])

0 个答案:

没有答案