Javascript $scope是否在Angular js中自动注入控制器?

Javascript $scope是否在Angular js中自动注入控制器?,javascript,angularjs,Javascript,Angularjs,起初我以为$scope会自动注入AngularJS中的控制器,但现在我感到困惑。我写了一小段代码 index.html <html ng-app> <body ng-controller="Controller"> <input type="text" ng-model="fname"> <span ng-bind="fname"></span> <body> </html> }]) 正如您所看

起初我以为$scope会自动注入AngularJS中的控制器,但现在我感到困惑。我写了一小段代码

index.html

 <html ng-app>
  <body ng-controller="Controller">
  <input type="text" ng-model="fname">
  <span ng-bind="fname"></span>
 <body>
</html>
}])

正如您所看到的,我并没有在这里向控制器注入$scope。加载页面时,文本字段或span上不显示“Foo Bar”。但当我开始在文本字段中写入一些值时,它会反映在跨度上。这意味着在作用域中声明了“fname”。但为什么它不显示在页面加载上呢。
当我注入$scope时,一切正常。

您有两种不同的情况发生。

首先,您需要以某种方式将应用程序绑定到
DOM
,在这种情况下,您将模块命名为
docssipledirective
,因此需要将
ng app=“docssipledirective
添加到控制器的相同级别或更高级别

<!-- added ng-app="docsSimpleDirective" -->
<div ng-app="docsSimpleDirective" ng-controller="Controller">
  <input type="text" ng-model="fname">
  <span ng-bind="fname"></span>
</div>
如果要将
$scope
$http
传递给控制器,它的定义如下

.controller('Controller', ['$scope','$http', function($scope,$http) { 
简而言之,您可以执行
.controller('controller',['$scope','$http',函数(foo,bar){…
foo
将等于
$scope
bar
将等于
$http
。这样做的目的是,当代码被丑化时,丑化工具不会更改
$scope
$http
的文字字符串,因此引用不会被破坏


您正在向控制器中注入
$http
,但将其称为
$scope
@JimCote:不,我故意传递了$http,因为我需要它,这只是一小段代码来显示示例数组中的字符串列表应与控制器函数的参数匹配。否则,将进行缩小ak你的应用程序。你的代码没有将$http注入控制器。有必要在$http之前传递$scope吗?这个顺序重要吗?不,它们可以是任何顺序。因此,在我们需要的所有情况下,都必须以任何顺序注入$scope。但是,函数中的参数的顺序应该与数组中先前定义的字符串的顺序相同。@使用r3427540如果不使用
$scope
,则不必传入它。在大多数情况下,您需要
$scope
,因为它是将数据绑定到
DOM
的工具。
angular.module('docsSimpleDirective', [])
.controller('Controller', ['$scope', function($scope) { 
          // Not ['$http', function($scope)....
    $scope.fname = 'Foo Bar';
}])
.controller('Controller', ['$scope','$http', function($scope,$http) {