在$ http回调中使用的$ rootScope。$ emit

时间:2018-04-04 15:27:50

标签: angularjs

我理解基本的Javascripts回调,但我不知道$rootScope.$emit 'dispatchQuery'正在做什么。

(function() {
  angular.module('sp').factory('Object', [
    '$rootScope', function($rootScope) {
      var Object;
      return Object = {
        load: function(callback) {
          return $http(method: "get", url: "http://myhost/bananas", options = {}).success(function(response) {
            $rootScope.myItems = response.items;
            return callback && callback();
          });
        }
      };
    }
  ]);
}).call(this);

main.js

调用
sp.run [
  '$rootScope','Object'
, function($rootScope, Object) {
  Object.load = function(){ $rootScope.$emit 'Query'}
}]

1 个答案:

答案 0 :(得分:1)

$rootScope.$emit()通过范围链向上调度事件消息。由于$rootScope位于范围链的顶部,因此只有$rootScope上的侦听器才会收到该事件。代码中的某个位置应该有$rootScope.$on('Query', function(){...})

然而,您的代码的语法似乎是错误的。下面的代码将生成语法错误。

$rootScope.$emit 'Query'

此外,您的工厂会创建一个.load()方法,然后在.run()块中使用其他方法替换该方法。您的代码示例中没有任何一个实际调用的方法。

最后......你应该避免使用关键字Object。考虑给你的服务工厂一个更有意义的名字。