首页 > 解决方案 > 为什么在 AngularJS 中有一个依赖注入,它使用关键字 value 传递 value 而不是使用 var

问题描述

我知道 AngularJS 有一些依赖注入技术。所以如果代码是 and mainApp.value("defaultInput", 5); 将数据传递给控制器​​。

//define a module
var mainApp = angular.module("mainApp", []);

//create a value object as "defaultInput" and pass it a data.
mainApp.value("defaultInput", 5);
...

//inject the value in the controller using its name "defaultInput"
mainApp.controller('CalcController', function($scope, CalcService, defaultInput) {
   $scope.number = defaultInput;
   $scope.result = CalcService.square($scope.number);

   $scope.square = function() {
      $scope.result = CalcService.square($scope.number);
   }
});

为什么不在模型定义之前声明 var defaultInput = 5 呢?为什么要在 AngularJS 中创建具有价值的新语法糖?当您已经有选择时,为什么要创建全新的东西?为什么要把事情复杂化?

标签: angularjsdependency-injection

解决方案


是的,你可以这样做,不同的是,

如果使用 var,则上下文仅对特定控制器可用。如果要在另一个控制器中声明,则需要使用另一个 var 并分配值。

当你使用 .value 时,它​​表现为一个全局常量,所以当你需要使用该值时,你可以注入该值并跨控制器使用。


推荐阅读