2016-12-06 3 views
0

Ich habe Tabelle mit Eingabe = Textfelder, und wenn einige der Felder ID 'vier' hat, muss ich diese ganze Zeile deaktivieren. Dazu versuche ich, diese Funktion zu nutzen:Tabelle Zeile in angularjs deaktivieren

$scope.disableIfRowHasFour = function(row){ 
    var result = row.filter(function(field){ 
     return field.id === 'four'; 
    }) 

    return result.length !== 0; 
    }; 

und in html:

<tr ng-disabled='disableIfRowHasFour(row)' ng-repeat='row in tableFields'> 
    <td ng-repeat='field in row'> 
    <input type="text" value='{{field.value}}'> 
    </td> 
</tr> 

und in devtools sehe ich, dass Zeile deaktiviert ist, aber Eingaben in dieser Reihe - nicht.

<tr ng-disabled="disableIfRowHasFour(row)" ng-repeat="row in tableFields" class="ng-scope" disabled="disabled"> 

wo liege ich falsch? Ich gehe davon aus, dass alle Elemente in einer Zeile deaktiviert werden .. Plnkr example

+1

Sie sollten den ng-disabled-Tag am Eingang statt der tr –

+0

ja, fügen aber wie kann ich alle Felder in einer Zeile deaktiviert, wenn id = vier nur 1 Eingang hat? – YoroDiallo

+1

add ng-disabled = 'disableIfRowHasFour (row)' auf der Eingabe. Es sollte funktionieren –

Antwort

1

Im tr Tag Verwendung ng-init eine Variable mit behindertem Wert zu initialisieren:

<tr ng-init='rowDisabled=disableIfRowHasFour(row)' ng-repeat='row in tableFields'> 

Und in den Eingängen Sie ng-disabled hinzufügen:

<input type="text" value='{{field.value}}' ng-disabled="rowDisabled"> 
+0

Ich denke, das würde nicht funktionieren, weil rowDisabled eine Variable wäre, die von allen Zeilen geteilt wird und daher wäre es wahr, wenn die letzte vier hat und false, wenn die letzte etwas anderes als vier hat. Aber ich bin mir nicht sicher über den Umfang der Variablen. –

+1

jedes Element in ng-repeat hat seinen eigenen Umfang, daher wird es funktionieren – harishr

+0

ja, es funktioniert auch, thx! ist das schneller als "ng-disabled = 'disableIfRowHasFour (row)' an der Eingabe"? oder es macht nichts? – YoroDiallo

Verwandte Themen