Ich versuche, einige benutzerdefinierte Direktiven für Eingaben mit Validierungen von ngMessages-Direktive erstellt zu erstellen. Trotzdem kann ich nicht mehrere Variablen aus $ scope verknüpfen, um den Formularnamen und den Namen der Eingabe dynamisch zu bestimmen. Hier ist mein Code so weit:AngularJS: Verknüpfen mehrerer Bereichsvariablen in externen Vorlage
Die Richtlinie:
app.directive('textBox', ['$compile', function ($compile) {
return {
restrict: 'E',
scope: {
label: "@",
fieldName: "@",
bindTo: "="
},
require: "^form",
templateUrl: '/WebClient/Directives/TextBox/textBoxTemplate.html',
link: function (scope, element, attrs, ctrl) {
$scope.formName = ctrl.$name;
}
};
}]);
Die Vorlage:
<div>
<label>{{label}}</label>
<input type="text" name="{{fieldName}}" ng-model="{{field}}" required />
<div ng-messages="{{formName}}.{{fieldName}}.$error">
<div ng-message="required">You left the field blank...</div>
<div ng-message="minlength">Your field is too short</div>
<div ng-message="maxlength">Your field is too long</div>
<div ng-message="email">Your field has an invalid email address</div>
</div>
</div>
Die Nutzung:
<text-box bind-to="myField" field-name="myField"></text-box>
Die Fragen, die ich beziehen sich begegnen zu dem ng- Nachrichtenattributwert Scheint nicht zu funktionieren, wenn ich geschweifte Klammern verwende und den Text "formName.fieldName. $ Error" rendert, wenn ich das nicht mache. Das andere Problem hängt mit dem ng-Modell zusammen, es gilt das gleiche Szenario.
Vielen Dank!
Funktioniert perfekt! Vielen Dank! –