如何在依赖模块中调用方法?

时间:2015-01-17 16:23:09

标签: javascript angularjs

我正在学习Angular。如何在依赖模块中调用方法?

app.js

(function(){
    var myApp = angular.module('myApp',['map']);
    myApp.filter('move', function(){
        return function(name){
            return walk(name);
        } 
    });
})();

map.js

(function(){
    var mapMod = angular.module('map',[]);

    mapMod.factory('walk', function(){
        return "walking...";
    });

})();

加载包含在脚本中的app.js和map.js的html页面后

 ReferenceError: walk is not defined

如何调用walk in move filter?

1 个答案:

答案 0 :(得分:0)

是的,你几乎做对了,你需要在过滤器中注入walk,你可以使用数组语法(在下面的例子中)通过显式注释选择dependency injection的任何模式,使用$ inject语法或隐式依赖注释(使用ng-annotate进行安全缩小)。由于您已将map列为模块myApp的依赖项,因此map模块中注册的所有实体也将在myApp中可用。您也可以参考how to write a factory/service上的文档。

(function() {
  var mapMod = angular.module('map', []);

  mapMod.factory('walk', function() {
    return function(name) {
      return "walking..." + name;
    }
  });

})();
(function() {
  var myApp = angular.module('myApp', ['map']);
  myApp.filter('move', ['walk',
    function(walk) {
      return function(name) {
        return walk(name);
      }
    }
  ]);
})();



(function() {
  var mapMod = angular.module('map', []);

  mapMod.factory('walk', function() {
    return function(name) {
      return "walking..." + name;
    }
  });

})();
(function() {
  var myApp = angular.module('myApp', ['map']);
  myApp.filter('move', ['walk',
    function(walk) {
      return function(name) {
        return walk(name);
      }
    }
  ]);
})();

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp">
  <div>{{"test"|move}}</div>
</div>
&#13;
&#13;
&#13;