2016-06-11 6 views
0

Ich habe diese Methode:Wie kann ich vollständig Ausfahrt aus dem Inneren eines .forEach, die innerhalb einer Funktion ist

wordFormDirty =(): boolean => { 
    var self = this; 
    angular.forEach(self.word.wordForms, function (wf, key) { 
     var wordFormNgForm = 'wordFormNgForm_' + wf.wordFormId 
     if (!self[wordFormNgForm].$pristine) { 
      return true; 
     } 
    }); 
    return false; 
}; 

Von dem, was ich sehe das nie wahr zurückgibt. Kann mir jemand Ratschläge geben, wie ich dies implementieren kann, so dass ein Formular, das nicht makellos ist, die Methode "wordFormDirty()" als "true" zurückgibt.

+0

Die innere Funktion gibt true zurück. Ich nehme an, dass die äußere Funktion wahr sein soll. Verwenden Sie einfach eine normale "for" -Schleife. – Jonathan

+0

versuchen Sie es mit "etwas" und sehen. – bhansa

+0

http://stackoverflow.com/questions/13843972/angular-js-break-foreach – bhansa

Antwort

1

können Sie dies versuchen, in diesem Fall, wenn ich das Problem undestand haben, gibt das erste Mal ein Wert wahr das Ergebnis auf true gesetzt ist ansonsten bleibt es falsch

wordFormDirty =(): boolean => { 
    var self = this; 
    var result = false; 
    angular.forEach(self.word.wordForms, function (wf, key) { 
     var wordFormNgForm = 'wordFormNgForm_' + wf.wordFormId 
     if (!self[wordFormNgForm].$pristine) { 
      result = true; 
     } 

    }); 
    return result; 
}; 
1

Wenn Sie ein Ergebnis direkt aus dem Gehen Array erhalten möchten, sollten Sie andere Methoden als forEach verwenden. ZB:

return Object.values(this.word.wordForms).some(
    ({ wordFormId }) => !this[`wordFormNgForm_${wordFormId}`].$pristine 
); 
+0

Ich mag diese Idee sehr, aber können Sie erklären, was mit Object.values ​​in Ihrem Beispiel gemeint ist und wie es in meiner Methode verwendet würde? –

+0

Ich habe mein Codebeispiel in ES7 geschrieben. Wenn Ihre Umgebung einige der Funktionen nicht unterstützt, können Sie sie füllen oder Alternativen finden, z. Verwenden Sie ['_.some'] (https://lodash.com/docs#some) von Lodash. Oder wenn 'wordForms' bereits ein' Array' ist, können Sie '.some' direkt verwenden. – hon2a

Verwandte Themen