2017-07-05 8 views
0

私はコードがあるすべてのアイテムはここで、数値である場合にのみ、バックエンドにいくつかのjsオブジェクトを投稿したい:単純なVuejs検証コードが期待どおりに機能していませんか?

var MyApp = new Vue({ 

     el: '#my_element', 
     data: { 
      errors: [], 
      votes: [] 
     }, 

     methods: { 
      send_votes: function(){ 
      if(this.validate_votes(this.votes) === true){ 
       return this.$http.post('/vote', this.votes).then(
        function (response) { 
          // success message 
        }, 
        function (error) { 
          // error message 
         } 
       ) 
       }, 
      } 

     }, 

     validate_votes : function (votes) { 

       var all_votes_are_number = true; 
       $.each(votes, function (item) { 
        if(isNaN(item)){ 
         all_votes_are_number = false; 
         MyApp.errors.push('one of votes is not a number'); 
        } 
       }) 

       return all_votes_are_number; 
     } 

    } 

しかし、私の票のいずれかが数値でない場合、機能しませんチェックするための検証とコードが継続DBにデータを投稿し保存する!私は何を間違えているのですか?

さらに検証を追加します。すべての票は一意でなければなりません。

+1

[$ .each](http://api.jquery.com/jquery.each/)のドキュメントを確認してもよろしいですか?コールバックの最初のパラメータは、アイテム自体ではなく、インデックスになります。 –

+0

@MatJありがとう!狂気の間違いは、私を試してみましょう –

答えて

1

問題はvalidate_votesです。 $.each関数を使用する場合、最初の引数は項目のインデックスであり、2番目の引数は項目そのものです。投票が['A','B','C']と等しい配列だった場合は、0,1,2をチェックします。代わりに以下を試してください:

validate_votes : function (votes) { 

       var all_votes_are_number = true; 
       $.each(votes, function (item, el) { 
        if(isNaN(el)){ 
         all_votes_are_number = false; 
         MyApp.errors.push('one of votes is not a number'); 
        } 
       }); 

       return all_votes_are_number; 
     } 
+0

あなたはありがとう、私はそれを得る今は 'また、私はより多くの検証を追加したい:すべての票はユニークでなければならない' –

+0

それを見つけた!答えをありがとう –