0

so habe ich ein Problem mit der ng-Repeat-Direktive. In meinem Code habe ich einen übergeordneten Controller, der Daten als Array von Objekten gespeichert hat.Passing-Funktion in ng-Repeat-Objekt

$scope.queue = [ 
    { 
    name: 'Mark', 
    sex: 'Male', 
    age: 21 
    }, 
    {...} 
]; 

$scope.changePositionInQueue = function (currIndex, targetIndex) { 
    // move up/down person in queue 
}; 

Was möchte ich tun, ist Funktion des Passmutter Controller auf meine Anweisung des (‚Person‘) isoliert Umfang und zur gleichen Zeit in der Lage sein, ‚$ index‘ zu verwenden, ‚$ first‘, ‚$ letzte‘ Variablen.

<person data-change-position="changePositionInQueue" data-person="person" ng-repeat="person in queue"></person> 

Richtlinie Geltungsbereich Erklärung:

scope: { 
person: '=', 
changePosition: '&' 
} 

Das Problem ist, dass, wenn ich isoliert Umfang Looping ng-repeat erstellen ng-Repeat-Eigenschaften I verlieren. Auf der anderen Seite, wenn ich Standard-Bereich durch ng-Repeat erstellen und ich habe Zugriff auf alle gewünschten Eigenschaften kann ich nicht die Elternfunktion verwenden.

+0

so auch diejenigen, auf Umfang passieren, wie Parameter zu Ihrem isolieren Bereich Richtlinie – harishr

+0

Danke für die Antwort, aber wie kann ich es tun? Übergabe von Parametern als Person. $ Index oder $ index gibt mir 'undefined' in directory untergeordneten Bereich. – tomeks

+0

etwas wie 'index: @' in Ihrer Direktive Definition des Bereichs und dann auf html 'data-index =" $ index "' sollte tun – harishr

Antwort

0

Dies ist meine Lösung für Ihre Herausforderung:
In Ansicht:

<my-directive dir-func="fnc($index)" data="data" ng-repeat="data in datas"><span>{{data.id|json}}</span><br></my-directive> 

In Direktruf geordneten Funktion in Verbindung:

myApp.directive('myDirective', function() { 
    return { 
    //require: 'ngModle', 
    scope: { 
     data: "=", 
     dirFunc: "&" 
    }, 
    link: function(scope, elem, attr, ngModel) { 
     scope.dirFunc() // parent scope.func is called here where you get the alert 

    } 

    } 

See the Plunker for detail

+0

Danke für Ihre Antwort. Es wurde mir nicht direkt geholfen, weil ich es herausgefunden habe, indem ich die $ index Eigenschaft von $ parent scope bekommen habe, aber meine Funktion wurde immer noch nicht richtig ausgeführt. Ich habe einen Fehler bei der Betrachtung Ihrer Anweisung gefunden. Ich habe Funktion durch Verweis in meiner Direktive weitergegeben, ohne Informationen über Argumente zu geben, die es braucht. Problem trotzdem gelöst, vielen Dank! – tomeks

+0

Froh, dass Hilfe, der Zweck des Beispiels dafür ist! :) Beifall! – praHoc