javascript - 为什么不能在 Angular 中更改参数名称

标签 javascript angularjs

在 Angular 中,这里是使用 $http 的简单示例。

var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope, $http) {
    $http.get("welcome.htm")
    .then(function(response) {
        $scope.myWelcome = response.data;
    });
});

我不明白的是,$http 是回调函数中参数的名称,所以如果将其重命名为其他名称,为什么会有所不同?

例如在 JavaScript 中这两个显然是完全相同的函数

function(a, b) {
    return a+b;
}

function(c, d) {
    return c+d;
}

但在这种情况下,如果我将 $http 替换为其他任何内容(例如 $HTTP),它会中断吗?

var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope, $HTTP) {
    $HTTP.get("welcome.htm")
    .then(function(response) {
        $scope.myWelcome = response.data;
    });
});

最佳答案

您当然可以使用其他名称,在特定情况下您应该!方法如下:

angular.module('myApp', [])
  .controller('myCtrl', ["$scope", "$http", function(thescope, thebackend) {
    thebackend.get("welcome.htm")
      .then(function(response) {
        thescope.myWelcome = response.data;
      });
  }]);

此处 controller(...) 的第二个参数是一个具有特定结构的数组。

  • 为了一个字符串列表,其中包含您希望 Angular 注入(inject)的服务名称;
  • 最后,最后一项是您的 Controller 构造函数,它采用参数来填充您在数组中早些时候请求的服务。

使用这种结构,您可以随意命名参数。

优点:您现在可以缩小此代码。缩小会将字符串单独留在数组中,从而留下正确的服务名称供 Angular 识别。参数将被安全地缩小,因为它们可以是任何东西。

您的版本没有这样的数组,将使用参数名称来查找适当的服务。如果你以不同的方式命名这些参数,Angular 将无法知道将什么服务注入(inject)到该参数中。

对于快速演示和临时应用程序,您的版本工作正常。这就是您经常看到它的原因,尤其是在文档或 SO 答案和问题中。对于生产应用,我建议始终使用缩小安全版本。

The other answer by @slugonamission也有一些很好的信息,包括指向 the appropriate documentation article on Dependency Injection 的链接.

附言。是的,你的第二个例子会失败,你可以很容易地尝试。 Angular 无法知道 $HTTP 是什么,因为它只知道 $http

关于javascript - 为什么不能在 Angular 中更改参数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38086021/

相关文章:

javascript - 无法连接到套接字 io 服务器

javascript - 使用 jQuery 或 Q.Js 进行 promise

javascript - 如何在 AngularJS 中与 ng-app 共享作用域变量

javascript - 如果特定值,则Angular Template条件语句无法运行

angularjs - ionic 火力基地。获取当前用户

javascript - jquery 内容可编辑缩进

javascript - Nodejs中require的使用与package.json有关吗

javascript - 如何防止函数数组中的函数在前一个函数完成之前执行

angularjs - ng-grid 中的外部过滤器

symfony - symfony2 应用程序上的 Angularjs