2016-11-11 6 views
0

Ich habe den folgenden Code:Kommunikation zwischen benutzerdefinierten Geschwister Richtlinien

<tr ng-repeat="row in ctrl.tableData"> 
    <td><status></status></td> 
    <td>{{row.id}}</td>      
    <td>{{row.firstName}}</td> 
    <td>{{row.lastName}}</td>     
    <td><number-picker></number-picker></td> 
</tr> 

Wo 'Status' und 'Nummer-Picker' meine custome Richtlinien sind.

Ich möchte die Sichtbarkeit von "Status" in Abhängigkeit von einem Status von "Nummer-Picker" in der gleichen Zeile ändern. Da sie sich in einem Raster befinden, gibt es mehrere Instanzen beider Direktiven.

Meine besten Lösungen bisher:
1. 'ng-repeat' erstellt einen neuen Bereich für jedes 'tr', so dass ich eine Variable zwischen 'Status' und 'Nummer-Picker' teilen kann - diese Methode geht davon aus, dass ich habe eine Zeilenvariable in $ scope, die schlecht ist
2. $ Broadcast ein Ereignis von 'number-Picker' und fange es mit $ on auf 'status' immer noch mit dem gemeinsamen $ scope
Gibt es eine sauberere Art zu erreichen dieses Verhalten?
Vielen Dank im Voraus!

--- EDIT ---
Danke, Vanojx1!
Ihr Vorschlag führte mich zu einer Lösung, die ich wirklich mag.
Ich habe einige Änderungen zu Ihrem Code gemacht, so dass es jetzt sehr ähnlich zu dem, was ich tun wollte.

Der Punkt ist, dass jetzt kann ich ‚numIsEven‘ verwenden die Änderung einiger inneren Zustand der Anzahl Kommissionierer zu alle anderen Geschwister Richtlinien anzuzeigen.

PLUNKER

Antwort

0

Fügen Sie ein Attribut wie shared-info:

<tr ng-repeat="row in ctrl.tableData"> 
    <td><status shared-info="row.sharedInfo"></status></td> 
    <td>{{row.id}}</td>      
    <td>{{row.firstName}}</td> 
    <td>{{row.lastName}}</td>     
    <td><number-picker shared-info="row.sharedInfo"></number-picker></td> 
</tr> 

dann Richtlinien definieren Umfang mit '='DOC:

..... 
    scope: { 
     sharedInfo: '=' 
    }, 
.... 

row.sharedInfo wird

zwischen Richtlinien geteilt werden

Plunker

Verwandte Themen