Dependency Injection (DI)

依賴注入

  • 常數值 (value)
  • 工廠 (factory)
  • 服務 (service)
  • 提供者 (provider)
  • constant

類型

[Value]

Value 是一个简单的 javascript 对象,用于向控制器传递值(配置阶段):

簡單說就是定義ㄧ個對像,並在之後使用

適用於ㄧ些參數設定上

html:

<body ng-app="mainApp">
<div ng-controller="DIController">
  <div>{{result}}</div>
</div>
</body>

script: 在controller的時候要把變述帶入才有效果

var mainApp = angular.module("mainApp", []);
//建立value對像[testDIValue],並傳遞參數"hihi"
mainApp.value("testDIValue", 'hihi');  
// 將[testDIValue] 注入到控制器controller內
mainApp.controller('DIController', function($scope,  testDIValue) {
  $scope.result = testDIValue;
});

[factory]

factory 是一个函数用于返回值。

在 service 和 controller 需要时创建。

通常我们使用 factory 函数来计算或返回值。

直接給controller使用

var mainApp = angular.module("mainApp", []);
mainApp.factory('TestService', function() {
   var factory = {};
   factory.test_method = function(a, b) {
      return a * b;
   };
   return factory;
});
mainApp.controller('DIController', function($scope, TestService) {
  $scope.number = 0;
  $scope.result = TestService.test_method($scope.number  ,$scope.number);
  $scope.doMethod = function() {
      $scope.result = TestService.test_method($scope.number  ,$scope.number);
  };
});

透過service使用

var mainApp = angular.module("mainApp", []);
mainApp.factory('TestService', function() {
   var factory = {};
   factory.test_method = function(a, b) {
      return a * b;
   };
   return factory;
});
mainApp.service('CalcService', function(TestService){
   this.square = function(a) {
      var b = parseInt(a)+1;
      return TestService.test_method(a,b);
   };
});
mainApp.controller('DIController', function($scope, CalcService) {
  $scope.number = 0;
  $scope.result = CalcService.square($scope.number);
  $scope.doMethod = function() {
     $scope.result = CalcService.square($scope.number);
  };
});

[service]

[provider]

[constant]

results matching ""

    No results matching ""