2017-04-01 8 views
-1
<div ng-app="myApp" ng-controller="myCtrl"> 

<h1>{{carname}}</h1> 

</div> 

<script> 
var app = angular.module('myApp', []); 

app.controller('myCtrl', function($scope) { 
    $scope.carname = "Volvo"; 
}); 
</script> 

ich $scope gedacht ist lediglich der Name eines Parameters für die anonyme Funktion, und man kann nicht einfach zuordnen es Eigenschaften (carname), ohne sie ein Objekt als vorbei das Argument.

Erstellt Angular automatisch ein Argument namens so etwas wie myCtrlScope an den Parameter $scope übergeben? Ansonsten sehe ich keine Möglichkeit, dass ein tatsächlich Objekt $scope übergeben wird, die lediglich ein Parameter ist.

+0

$ Umfang in bereits von AngualrJS Entwickler definiert, wann immer wir es in unserem Code verwenden, Winkel kam automatisch zu erkennen und zu injizieren es Abhängigkeits . Dieses Konzept, bekannt als Dependency Injection, können Sie [this] (https://www.google.com.pk/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwjH5srUuYLTAhWEaxQKHZ11CBgQFgXMAA&url=https lesen % 3A% 2F% 2Fdocs.angularjs.org% 2Fguide% 2Fdi & usg = AFQjCNFnywa5rLhpd14MLfHHNAmkQbjs5w & sig2 = bdJ5Y9iVZ - H78R0xrgudQ & bvm = bv.151325232, d.bGs) zum besseren Verständnis. – MUT

+0

Dies wird sehr deutlich in der Dokumentation erläutert: https://docs.angularjs.org/guide/scope – Claies

Antwort

0

Die Art und Weise der Controller geschrieben als wie dies auch geschrieben werden:

app.controller('myCtrl', [ "$scope", function($scope) { 
    $scope.carname = "Volvo"; 
}]); 

Die Art und Weise ist Methode Kurz Hand erklärt. Die Art, wie Sie erwähnt haben, ist nicht falsch, aber die bessere Methode zum Deklarieren ist die obige Methode, bei der wir jede der Abhängigkeiten angeben. Sie können die Dokumentation für dependency injection zur besseren Erläuterung überprüfen.

0

Verwendung dieses Inline Array Annotation wie diese

<div ng-app="myApp" ng-controller="myCtrl"> 

<h1>{{carname}}</h1> 

</div> 

<script> 
var app = angular.module('myApp', []); 
app.controller('myCtrl',['$scope', function($scope){ 
    $scope.carname = "volvo"; 
}]); 
</script> 

</body> 
</html>