2016-07-18 1 views
1

基本的に私はこのクイズアプリを使って角度を使って作業しています。正しい答えが入力された時間を集計したいと思います。私はすでにそれを作ったので、テキストボックスに正解を入力すれば「正解」という言葉が表示されますが、何回起こったのかを見たいと思っています。ここに私のコードはタリーアップ角の出現数

div ng-repeat="q in questions"> 
    <span>{{ q.question }}</span><br> 
    <input type="text" ng-model="q.ans" name="email" placeholder=""> 

    <div ng-show="q.ans===q.answer">CORRECT!</div> 

<div> 

ですので、基本的に質問は質問文字列と回答文字列を持つ配列です。私は最後に何が正しいかを見たいと思います。だから私は、問題のオブジェクトに正しいプロパティを追加しました。これはデフォルトが0で間違っている可能性があり、その権利が1になると変更されます。

これでhtmlページ誰かが正解をタイプするとここに来る?正しい場合はng-showが正しい場合は1、それ以外の場合は0となります。

ありがとうございました。最後に「チェック」ボタンを表示するのではなく、リアルタイムでこれを行うことができるかどうかわかります。

EDIT:大丈夫I NG-かのディレクティブを中心に見て、何らかの形で

<div ng-if="q.ans===q.answer">{{ q.correct = 1 }} </div> 

または何らかの形でNG場合q.correct = 1(答えが正解であることを意味する)ことを実行するように追加することも可能ですブロックが実行されている?

// app is your module 
app.filter('correctCount', function() { 
    return function(questions) { 
     return questions.reduce(function(count, q) { 
      return count + (q.ans === q.answer ? 1 : 0); 
     }, 0); 
    }; 
}) 

正解をカウントする

答えて

1

Make a filter次に、あなたがあなたのテンプレート

Total: {{questions | correctCount | number}} 

デモ〜http://plnkr.co/edit/br3fxHQ8q04ajZj6Fxch?p=preview


であるかもしれないreduceに代わる合計を表示することができます理解しやすいです...

return questions.filter(function(q) { 
    return q.ans === q.answer; 
}).length; 
+0

thats実際には完璧に感謝します。私はまだそれを介して論理的にどのように動作するか把握しようとしています。 reduce関数はパラメータとしてコールバックを実行するだけですか? – JimmySmithJR

+0

@ crooked91ここに 'reduce'のドコがあります〜https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce – Phil

+0

簡単な質問、どうすればq.ansを変更できますか?モデルの中のちょうどansにとフィルタでは、それはもう働きません(代わりに、フィルタ|角度コード – JimmySmithJR