从AngularJS中的控制器调用服务

时间:2017-02-24 21:58:21

标签: javascript angularjs

我对AnjularJs很新,所以请耐心等待。在我当前的代码中,各种控制器使用相同的方法。已经在每个控制器上粘贴了方法,这不是很好的做法。但现在我想在各种控制器之间共享这些方法作为CommonUtility.js为了做到这一点,我需要提供服务或工厂,我在网上看了很多。但不确定如何? 如果您能告诉我该怎么做,请参阅下面的代码。 filename:Controller.js

(function(){ 
  var somecontrollers = angular.module('angular'); 
  somecontrollers.controller('NameofController', function ($scope, $http) {
    //code
    ..
    ..
    ..
  });
})();

文件名:CommonUtilities.js

var CommonUtilities = angular.module('CommonUtilities', [])
  .service('Collapse', function () {
    this.CollapseTree = function () {
      var name 
      return name
    }
    method2
    method3
    ...
  });

如何在Controller.js中添加对commonUtilities.js或其方法的引用?任何帮助表示赞赏。 还有一个问题。如何在CollapseTree函数中使用$ scope? 谢谢。

1 个答案:

答案 0 :(得分:1)

这样写,所以非常清楚:

(function(){ 
  'use strict';

  var somecontrollers = angular.module('angular', ['CommonUtilities']); 
  somecontrollers.controller('NameofController', NameofController);

  NameofController.$inject = ['$scope', '$http', 'Collapse'];

  function NameofController($scope, $http, Collapse) {
    Collapse.CollapseTree();
  });
}();

您只需通过之前提供的名称来引用它。此外,请务必包含包含您服务的模块。

您无法在服务中使用$scope$scope严格用于控制器,作为在视图中引用方法和变量的方法。