Javascript 将数组从数据库传递到控制器AngularJs

Javascript 将数组从数据库传递到控制器AngularJs,javascript,html,angularjs,node.js,Javascript,Html,Angularjs,Node.js,我有一个小问题,这个应用程序,我正在建设学习AngularJs 这是一个足球统计应用程序。我从2个下拉菜单中选择主队和客队。 然后我要做一些数学运算,只显示结果 这是我的html代码: <div class='dropdown'> <span>Seleziona Nazione: </span> <select class='opzioni' ng-model="nazioniSelected

我有一个小问题,这个应用程序,我正在建设学习AngularJs

这是一个足球统计应用程序。我从2个下拉菜单中选择主队和客队。 然后我要做一些数学运算,只显示结果

这是我的html代码:

               <div class='dropdown'>
         <span>Seleziona Nazione:      </span>
  <select class='opzioni' ng-model="nazioniSelected">
  <option ng-repeat="nazione in nazioni track by $index" value="{{nazione}}">{{nazione}}
  </option>
  </select>
  </div>

  <div class='dropdown2'>
  <span>Seleziona Campionato:      </span>
  <select class='opzioni' ng-model="campionatoSelected">
  <option ng-repeat="team in teams  | filter: {Paese:nazioniSelected} track by $index" value="{{team.Campionato}}">{{team.Campionato}}
  </option>
  </select>
  </div>


  <div class='SquadraCasa'>
  <span>Seleziona Squadra Casa: </span>
    <select class='opzioni' ng-model="HomeTeamSelected" >
        <option ng-repeat="team in teams  | filter: 
  {Campionato:campionatoSelected, Paese:nazioniSelected} track by $index" 
   value='{{team.Nome}}'>
        {{team.Nome}}
       </option>
    </select>

   </div>


   <div class='SquadraTrasferta'>
   <span>Seleziona Squadra Trasferta:      </span>
    <select class='opzioni' ng-model="AwayTeamSelected">
       <option ng-repeat="team in teams | filter: 
  {Campionato:campionatoSelected, Paese:nazioniSelected} track by $index" 
    value='{{team.Nome}}'>{{team.Nome}}
       </option>
    </select>
    </div>



    <div class='InfoCasa'>
         <ul ng-repeat='team in teams | filter:  {Nome: HomeTeamSelected}  track by $index'>

       <img  ng-show='HomeTeamSelected' src="{{team.Stemma}} ">
     <p class='nome' ng-show='HomeTeamSelected'> {{team.Nome}}  </p>
     </ul>  
     </div>



      <div class='InfoTrasferta'>
      <ul ng-repeat='team in teams | filter:  {Nome: AwayTeamSelected}  track by $index'>

       <img  ng-show='AwayTeamSelected' src="{{team.Stemma}} ">
       <p class='nome2' ng-show='AwayTeamSelected'> {{team.Nome}}   </p>    
       </ul>   
       </div>


      <div class="Calcolo"   ng-show='AwayTeamSelected'>

     <p>
     Doppia Chance             {{doppia}}
     </p><br><br>

     <p>
      1x2
     </p><br><br>

     <p>
     Over 1,5
     </p><br><br>

     <p>
     Over 2,5
     </p>


      <button class="calcola"  ng-click='calcolarisultato(HomeTeamSelected,AwayTeamSelected)' > Calcola

     </div>

塞莱齐奥纳·纳齐奥内:
{{nazione}}
Seleziona Campionato:
{{team.Campionato}
塞莱齐奥纳·斯瓦德拉之家酒店
{{team.Nome}}
塞莱齐奥纳·斯瓦德拉·特拉斯弗塔:
{{team.Nome}}

    {{team.nome}

    {{team.Nome}}

多皮亚机会{{Doppia}

1x2

超过1,5

超过2,5

卡尔科拉
我的问题是:在这个ng单击中,我不仅要传递名称,还要传递所有团队变量,因为我需要关于我所选团队的所有数据

目前,我的控制器是这样的,不工作:

              FootballNumbers.controller('teamController', function($scope, $route, $routeParams, $http) {
     $http.get('/api/teams').then(function(response) {
         $scope.teams = response.data;
         console.log(response.data);
     });
     var squadra = $scope.teams;
     $scope.nazioni = ['Austria', 'Belgio', 'Bulgaria', 'Croazia', 'Danimarca', 'Finlandia',
         'Francia', 'Germania', 'Grecia', 'Inghilterra', 'Italia', 'Norvegia', 'Olanda',
         'Polonia', 'Portogallo', 'Rep. Ceca', 'Romania', 'Russia', 'Spagna', 'Turchia', 'Svezia',
         'Svizzera', 'Ucraina'
     ];
     $scope.calcolarisultato = function(squadra1, squadra2) {
         for (i = 0; i < squadra.length; i++) {
             for (j = 0; j < squadra.length; i++) {
                 if (squadra[i].Nome == squadra1) {
                     if (squadra[j].Nome == squadra2) {
                         var media1 = (squadra[i].Classifica + squadra[i].ClassificaCasa +
                             squadra[i].Forma) / 3;
                         var media2 = (squadra[j].Classifica + squadra[j].ClassificaTrasferta +
                             squadra[i].Forma) / 3;
                         if ((media1 + 3) <= media2) {
                             $scope.doppia = '1 X';
                         } else if ((media2 + 3) <= media1) {
                             $scope.doppia = 'X 2';
                         } else {
                             $scope.doppia = 'Niente';
                         }
                     }
                 }
             }
         }
     }
 });
FootballNumbers.controller('teamController',函数($scope、$route、$routeParams、$http){
$http.get('/api/teams')。然后(函数(响应){
$scope.teams=response.data;
console.log(response.data);
});
var squadra=$scope.teams;
$scope.nazioni=[“奥地利”、“比利时”、“保加利亚”、“克罗地亚”、“达尼马卡”、“芬兰”,
“弗朗西娅”、“日耳曼尼亚”、“格雷西亚”、“英吉尔特拉”、“意大利”、“挪威”、“奥兰达”,
“波罗尼亚”、“波多加洛”、“塞卡众议员”、“罗马尼亚”、“俄罗斯”、“斯帕尼亚”、“图尔基亚”、“斯维齐亚”,
“Svizzera”、“Ucraina”
];
$scope.calcolarisultato=函数(squadra1、squadra2){
对于(i=0;i如果((media1+3)问题是由于异步执行。由于异步执行,
squadra
的值在API调用之外未定义

 FootballNumbers.controller('teamController', function($scope, $route, $routeParams, $http) {
         $http.get('/api/teams').then(function(response) {
             $scope.teams = response.data;
             console.log(response.data);
             var squadra = $scope.teams;
         });
     $scope.nazioni = ['Austria', 'Belgio', 'Bulgaria', 'Croazia', 'Danimarca', 'Finlandia',
         'Francia', 'Germania', 'Grecia', 'Inghilterra', 'Italia', 'Norvegia', 'Olanda',
         'Polonia', 'Portogallo', 'Rep. Ceca', 'Romania', 'Russia', 'Spagna', 'Turchia', 'Svezia',
         'Svizzera', 'Ucraina'
     ];
     $scope.calcolarisultato = function(squadra1, squadra2) {
         for (i = 0; i < squadra.length; i++) {
             for (j = 0; j < squadra.length; i++) {
                 if (squadra[i].Nome == squadra1) {
                     if (squadra[j].Nome == squadra2) {
                         var media1 = (squadra[i].Classifica + squadra[i].ClassificaCasa +
                             squadra[i].Forma) / 3;
                         var media2 = (squadra[j].Classifica + squadra[j].ClassificaTrasferta +
                             squadra[i].Forma) / 3;
                         if ((media1 + 3) <= media2) {
                             $scope.doppia = '1 X';
                         } else if ((media2 + 3) <= media1) {
                             $scope.doppia = 'X 2';
                         } else {
                             $scope.doppia = 'Niente';
                         }
                     }
                 }
             }
         }
     }
 });
FootballNumbers.controller('teamController',函数($scope、$route、$routeParams、$http){
$http.get('/api/teams')。然后(函数(响应){
$scope.teams=response.data;
console.log(response.data);
var squadra=$scope.teams;
});
$scope.nazioni=[“奥地利”、“比利时”、“保加利亚”、“克罗地亚”、“达尼马卡”、“芬兰”,
“弗朗西娅”、“日耳曼尼亚”、“格雷西亚”、“英吉尔特拉”、“意大利”、“挪威”、“奥兰达”,
“波罗尼亚”、“波多加洛”、“塞卡众议员”、“罗马尼亚”、“俄罗斯”、“斯帕尼亚”、“图尔基亚”、“斯维齐亚”,
“Svizzera”、“Ucraina”
];
$scope.calcolarisultato=函数(squadra1、squadra2){
对于(i=0;i如果((media1+3)您使用异步函数初始化
团队
,但在获取这些值之前初始化了
squadra
变量。只需使用
$scope.teams
并删除此行,而不是在控制器内使用squadra值:

var squadra = $scope.teams;
然后,无论您在控制器中的何处使用squadra,都可以使用
$scope.teams


还可以考虑将常量定义为单独的AngularJS常量,而不是在控制器中列出它们,然后在控制器中注入该常量。这样可以使代码更干净、更可重用。

好的,但是这样我就在下拉列表中丢失了所有过滤器。糟糕,如果使用API的response.Ca,我没有检查HTML代码n是否尝试使用更新后的答案?我将此变量squadra=$scope.teams;移动到API调用中,或按照下面的建议使用$scope值编辑变量,我不再收到错误,但当我单击按钮时,什么也没有发生。您是否将
squadra
存在的所有代码更改为
$scope.teams
squadra[i].Nome
应该变成
$scope.teams[i].Nome
?是的……事实上,当我单击按钮时,没有出现错误,但没有其他任何情况发生。我会检查better@MarcoPagano索诺·费利斯·拉·索卢齐奥·阿比娅·福齐奥纳托:)联合国短笛协调者。在所有内部密码中使用密码。在所有密码中使用密码。在bocca al-lupo应用程序中,使用密码的所有人都可以方便地进行密码调试:)