$ rootscope.$ http回调中使用的$ emit



我了解基本的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'}
}]

$rootScope.$emit()通过范围链向上派遣事件消息。由于$rootScope位于范围链的顶部,因此$rootScope上的听众只会收到该事件。代码中的某个地方,应该有一个$rootScope.$on('Query', function(){...})

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

$rootScope.$emit 'Query'

另外,您的工厂创建了一个.load()方法,然后在.run()块中用其他方法替换。代码样本中的任何地方都没有实际调用。

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

最新更新