2014-04-02 4 views
10

Ich bin neu bei angularjs. Was ist der Unterschied, wenn Sie $ scope oder diese Schlüsselwörter im Controller zuweisen? Danke.Unterschied zwischen diesem und Umfang in der Steuerung

Beispiel (scope):

.controller('TestCtrl', ['$scope', function ($scope) { 
    $scope.testFunc = function() { 
    }; 
}]); 

Beispiel (dies)

.controller('TestCtrl', [function() { 
    var app = this; 
    app.testFunc = function() { 
    }; 
}]); 

Antwort

10

$scope ist ein Kerngedanke des Winkelrahmen und zwei Datenbindungs ​​functionnalities. Seine beispielsweise entworfen seinen Inhalt zu teilen mit:

  • Vorlagen
  • Richtlinien
  • etc

In einer Vorlage zum Beispiel, müssen Sie eine Funktion zum scope binden darauf zuzugreifen. Sie können eine Funktion, die an this gebunden ist, nicht direkt aufrufen.


Edit: danken BKM post das, dass dieses Verhalten mit dem „Controller als“ Syntax möglich ist, wies darauf hin, die Vorlage an die Steuerung direkt bindet. Sie müssen jedoch entscheiden, ob Sie auf alle Objekte/Variablen Ihres Controllers in Ihrer Vorlage zugreifen möchten, anstatt eine dedizierte viewModel (scope). siehe Vor- und Nachteile: https://groups.google.com/forum/#!topic/angular/84selECbp1I


Es ist ein wichtiges Konzept des Winkels, dass Sie verstehen müssen.

See:

this keywork zu Ihrem controller nur das die Javascript object refering bezieht, nichts mehr.

8

Was Bixi sagte, war falsch. Es ist nicht erforderlich, dass eine Funktion an den Bereich gebunden ist, um darauf zugreifen zu können.

In der neuesten Version von Angular JS, d. H. 1.2 haben sie ein neues Schlüsselwort controllerAs eingeführt, um es möglich zu machen, Umfang in einem Controller zu haben.

<div ng-controller="testCtrl as test"> 
    {{test.value}} 
</div> 

Und in Ihrem Controller

app.controller('testCtrl ', function() { 
    this.value = 'Hello World'; 
}); 

Siehe oben Regler mit aus Injizieren $scope darin erzeugt wird.

Here ein gutes Video-Tutorial ist zu erklären dieses

+0

Vielen Dank für poiting dass out, meinen Beitrag bearbeitet. –

+0

@BKM das war genau das Tutorial, das ich gesehen habe und dieses Konzept sah, also brauchte ich eine Klarstellung dafür. Vielen Dank für Ihre Antworten Jungs, Prost! ;) –

Verwandte Themen