2016-05-08 6 views
0

Ich habe eine Vorlage, die dynamisch Modellnamen in einer ng-repeat-Direktive mit dem $ index-Wert erstellt. Das ist so, dass ich die JSON-Elementbeschriftungen erhöhen kann, die schließlich übergeben werden. Es ist ein Feld, um eine der verschiedenen dynamisch erstellten Optionen auszuwählen. In Form von:AngularJS: Wie man dynamisch erzeugten Modellnamen in der Vorlage zum Prüfer übergibt?

<ng-model="data.items['item' + ($index+2)]"> 

Das hat alles super funktioniert. Ich möchte ein neues Feature hinzufügen, indem ich einen Button verwende, der an eine Funktion angehängt ist, die an die jeweilige ng-repeat-Instanz gebunden ist, an die der Button gebunden ist. Diese Funktion löscht das Optionsfeld. Also auf der Schablonenseite tue ich:

Und ich möchte für den Controller das aufheben. Da der Controller das Attribut $ index nicht akzeptiert, funktioniert dies nicht. Wenn ich die Nummer feststelle, um es zu testen, wie folgt:

$scope.clearValue = function() { 
    $scope.data.items.item2 = undefined; 
}; 

Es funktioniert super. Aber natürlich so etwas wie dies zu tun nicht:

$scope.clearValue = function() { 
    $scope.data.items['item' + ($index+2)] = undefined; 
}; 

Aber natürlich ist es schwer Codierung in macht es nur für diesen einen bestimmten Wert zu arbeiten. Werte werden dynamisch mit einer Funktion hinzugefügt, so dass ein oder ein Hundert oder irgendwo dazwischen liegen kann.

Gibt es eine Möglichkeit, die Funktion clearValue dazu zu bringen, ein beliebiges Modell aufzurufen, das sie aufruft, in der obigen Form?

+0

Können Sie eine Geige erstellen, nur um eine bessere Vorstellung davon zu bekommen, was Sie vorhaben? –

Antwort

0

, was Sie tun können, ist, dass Sie einfach die $ index in den Funktionsparameter

an die Steuerung übergeben zurück
<ng-click="clearValue(($index+2))" ng-disabled="!data.items['item' + ($index+2)]"> 

$scope.clearValue = function(index) { 
    $scope.data.items['item' + (index)] = undefined; 
}; 

Hope this Hilfe.