2017-05-19 5 views
0

ラジオボタンの複数のグループから値を取得できません。理想的には、選択したラジオボタンを配列に格納してデータベースに挿入したいと思います。私は、各ラジオボタングループに独自のng-model属性があると考えているので、ng-repeatのng-modelに何を使用するのか分かりません。ここでAngularJS-ng-repeat複数のラジオボタングループ、配列への値

は私のhtmlです:

 <table id="p4c-table" class="table table-striped table-responsive"> 
      <thead> 
       <tr> 
        <th>FAVORITE</th><th>POINTS</th><th>UNDERDOG</th> 
       </tr> 
      </thead> 
      <tbody> 
       <tr ng-repeat="game in games"> 
        <td> 
         <div class="switch-field"> 
          <img class="logo-left remove" src="./assets/img/logos/{{ game.fav_sn }}.gif" alt="{{ game.favorite }}"> 
          <input id="{{ game.fav_nickname }}" type="radio" value="{{ game.fav_nickname }}" name="{{ game.game_id }}" /> 
          <label for="{{ game.fav_nickname }}" class="hvr-box-shadow-inset pull-right">{{ game.fav_nickname }}</label>  
         </div> 
        </td> 
        <td class="text-center">{{ game.points }}</td> 
        <td class="text-right"> 
         <div class="switch-field"> 
          <input id="{{ game.und_nickname }}" type="radio" value="{{ game.und_nickname }}" name="{{ game.game_id }}" /> 
          <label class="hvr-box-shadow-inset" for="{{ game.und_nickname }}">{{ game.und_nickname }}</label> 
          <img class="logo-right remove" src="./assets/img/logos/{{ game.und_sn }}.gif" alt="{{ game.underdog }}"> 
         </div> 
        </td> 
       </tr> 

      </tbody> 
      <tfoot> 
       <tr><th colspan="5"><i>Home teams capitalized in bold</i></th></tr> 
      </tfoot> 
     </table> 

ここに私のapp.jsファイルされる:

(function() { 

var app = angular.module("app", ['ngRoute']); 

app.config(function($routeProvider) { 
    $routeProvider 
     .when('/', { 
      templateUrl: 'templates/home.html' 
     }) 
     .when('/picksheet', { 
      templateUrl: 'templates/picksheet.html', 
      controller: 'PicksheetController' 
     }) 
     .otherwise({ 
      redirectTo: '/' 
     }); 
}); 

}()); 

ここでは私のコントローラされています。ここでは

(function() { 

var application = angular.module('app'); 
var PicksheetController = function($scope, $http, $log) { 

    $http.get('./resources/picksheet.php') 
     .success(function(data) { 
      $scope.games = data; 
      console.log(data); 
     }) 
     .error(function(err) { 
      $log.error(err); 
     }) 

} 

application.controller("PicksheetController", PicksheetController) 

}()); 

は私のpicksheet.phpファイルされます:

<?php 

include __DIR__ . '\config.php'; 

$conn = new mysqli($host, $user, $pass, $db); 

if($conn->connect_errno) { 
    die("Database Connection failed:" . $conn->connect_errno); 
} 

$sql = 'SELECT A.game_id, B.team_nickname AS fav_nickname, fav_sn, C.team_nickname AS und_nickname, und_sn, points, favorite, underdog 
     FROM p4c_games A 
     JOIN p4c_teams B ON A.favorite = B.team_fn 
     JOIN p4c_teams C ON A.underdog = C.team_fn 
     JOIN p4c_current_week_season D ON A.week = D.week AND A.season = D.season 
     ORDER BY A.game_id'; 

$qry = $conn->query($sql); 

$data = array(); 

if($qry->num_rows > 0) { 
    while($row = $qry->fetch_object()) { 
     $data[] = $row; 
    } 
} else { 
    $data[] = null; 
} 

$conn->close(); 

echo json_encode($data); 
?> 

ここにはfiddleがあります。

ラジオボタンのそれぞれについて
+0

[pen](http://codepen.io/)/ [fiddle](https://jsfiddle.net/)/ [plunker](https://plnkr.co/edit)を追加することをおすすめします。 /?p =カタログ)。もっと助けてくれるでしょう。 – alphapilgrim

答えて

0

、以下NGモデルは、ラジオボタンを選択すると、そのラジオボタンに指定された「値が」「game.selectedTeamに設定され

ng-model="game.selectedTeam" 

結合追加'属性。

fiddle here

編集作業を参照してください:追加検証をし、フィドルにリクエストの作成を保存します。

+0

ありがとうございました。これらの値を保存してデータベースに挿入できるのはどうすればいいですか?私は、提出ボタンの検証として使用できるリストを考えていたので、適切な数のゲームが選択されるまで提出することができませんでした。 – user3456446

+0

選択内容は元の$ scope.gamesオブジェクトに保存されます。 これを繰り返し実行し、検証を実行できます。私はバリデーションを実行し、選択肢を持たない行を強調表示するためにオリジナルのフィドルを更新しました。 – CodeWarrior

+0

サーバーへの保存に関する質問に答えるには、ゲームオブジェクト全体をサーバーに送信するか、あまりに重すぎると思われる場合は、ゲームIDと選択肢のみを使用して保存要求を作成することができます。私はそれもフィドルに加えました。 – CodeWarrior

関連する問題