Ich habe eine Direktive in einem ng-Repeater, die eine Bereichseigenschaft setzen sollte. Bitte beachten Sie die Geige hier: http://jsfiddle.net/paos/CSbRB/Wie setze ich den Winkel-Controller-Objekteigenschaftswert aus der Direktive im Kindbereich ein?
Das Problem ist, dass der Umfang Eigenschaft wird als Attributwert wie folgt angegeben:
<button ng-update1="inputdata.title">click me</button>
Die Richtlinie den Anwendungsbereich Eigenschaft festlegen soll inputdata.title zu einem gewissen Zeichenfolge . Dies funktioniert nicht:
app.directive('ngUpdate1', function() {
return function(scope, element, attrs) {
element.bind('click', function() {
scope.$apply(function() {
scope[ attrs.ngUpdate1 ] = "Button 1";
});
});
};
});
Allerdings funktioniert die Zuordnung direkt:
scope["inputdata"]["title"] = "Button 1";
Können Sie mir bitte sagen, wie ich einen Umfang Eigenschaft mit festlegen. Notation in seinem Namen von einer Direktive?
PS: Der Grund, warum die Geige einen Repeater verwendet, liegt darin, dass die Direktiven in untergeordneten Bereichen liegen. Wenn sie sich in einem untergeordneten Bereich befinden, können Sie nicht in Bereichseigenschaften schreiben, die Grundelemente sind. Deshalb brauche ich eine Objekteigenschaft mit "." im Namen. Sehen Sie sich die lange Erklärung hier: What are the nuances of scope prototypal/prototypical inheritance in AngularJS?
Danke
Eine unelegant Lösung die Zeichenfolge Form von '$ apply' zu verwenden wäre, zum Beispiel:.' Umfang gelten $ (attrs.ngUpdate1 + '=' + '"Button 1"'); '. –
@Josh, für den Fall, dass Sie meine Antwort nicht sehen, ist die elegante Lösung, $ parse zu verwenden. –