2016-06-29 3 views
2

Ich sehe folgende:erfordern ngModel Syntax in AngularJS

// my-directive.js  
return { 
    require: 'ngModel', 
    scope: { 
    ngModel: '=', 
    }, 
    controller: controller, 
    link: myLink 
}; 

// my-link.js 
return function(scope, $element, attrs, modelController) { 
    scope.onMyClick = function(event) { 
    modelController.$setViewValue(getItem(event)); 
    } 
}; 

// foo.html 
<my-directive ng-model="myModel"></my-directive> 

Ist ng-model Richtlinie ein Zwei-Wege-Datenbindung an die myModel im äußeren Rahmen zu schaffen, dort eingesetzt, wo die my-directive Instanz deklariert wird?

Ist dies die idiomatische Methode, in Angular 1.4 eine bidirektionale Datenbindung zwischen einer Direktive und einem äußeren Modell bereitzustellen?

Setzt die require: 'ngModel' in der Definition der Richtlinie irgendetwas anderes als die Controller-Instanz für die ng-model Direktiveninstanz in die Link-Funktion my-link ein?

Schließlich macht es den Controller von ng-model auf dem Umfang für den Controller von my-directive zu verwenden?

Antwort

1

Es gibt 2 verschiedene Dinge hier - ng-model als Direktive und ngModel: '=' in der Direktive als Attribut. sie läßt aufgeteilt:

<my-directive ng-model="myModel" whatever="myModel"></my-directive> 

return { 
    require: 'ngModel', 
    scope: { 
    myModel: '=', 
    }, 
    controller: controller, 
    link: myLink 
}; 

Ist ng-Modell-Richtlinie, um eine Zwei-Wege-Datenbindung zu den MyModel im äußeren Umfang eingesetzt, wo die my-Richtlinie-Instanz deklariert wird?

Nein, 2-Wege-Bindung wird per Definition innerhalb der Direktive bereitgestellt. (whatever hier)

Ist dies der idiomatische Weg Zweiweg-Daten zu liefern, zwischen einer Richtlinie verbindlich und ein Außenmodell in Angular 1.4?

Ein Sie verwendet Scope: { whatever : '='} ist üblich.

Ist die erforderlich sein: 'ngModel' in der Richtlinie Definition alles tun andere als die Controller-Instanz für die ng-Modell Richtlinie Instanz in die Link-Funktion my-Link

Nicht viel injizieren , wenn Sie die Direktive ohne ngModel verwenden, wird der Fehler ausgegeben.

Schließlich macht es die Steuerung von ng-Modell auf den Rahmen für die Steuerung von my-Direktive zu benutzen?

Nein, es fügt nichts zu Ihrem Umfang hinzu. Sie können nur auf den injizierten Controller zugreifen.