2016-06-11 11 views
0

ある.forEach内側から、私は完全に終了することができます。誰かが私にこれを実装して、元のものではないフォームがwordFormDirty()メソッドをtrueに戻すようにアドバイスすることはできますか?どのように私は、このメソッドを持っている関数内

+0

まま内部関数はtrueを返します。外部関数をtrueに戻したいと思いますか?通常の 'for'ループを使用してください。 – Jonathan

+0

'some'を使って試してみてください。 – bhansa

+0

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

答えて

1

あなたはこれを試すことができ、この場合には、値は、結果がtrueに設定されている真があり、それ以外の場合はfalseを

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

Arrayの歩行の結果を直接取得したい場合は、forEach以外の方法の使用を検討してください。例えば:私は、初めて問題をundestandした場合

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

私はこのアイデアが大好きですが、あなたの例でObject.valuesが意味するものと、それが私のメソッドでどのように使われるのかを説明できますか? –

+0

私はES7で自分のコードサンプルを書きました。環境によっては機能の一部がサポートされていない場合、それらをポリフィルしたり代替案を見つけることができます。 Lodashの['_.some'](https://lodash.com/docs#some)を使用してください。あるいは、 'wordForms'が既に' Array'であれば '.some'を直接使うことができます。 – hon2a

関連する問題