簡體   English   中英

JSON數據上的Angularjs

[英]Angularjs on JSON data

實際上,我當時正在使用angularJS對JSON數據進行一些計算操作,請問有人可以幫助我解決此問題。 enter code here 的代碼片段 如果您查看“ script.js”文件,則有一個JSON數據“ marksArray”,我必須計算每個學生的總成績(例如abc的總成績為85),還必須計算那里有多少學生(分開)計數為-abc:2,pqr:2,xyz:3)。 請幫我解決這個問題。

HTML:

<!DOCTYPE html>


<html>

  <head>
    <link rel="stylesheet" href="style.css" />
    <script src="script.js"></script>
  </head>

  <body ng-app="myapp">
    <div ng-controller="mainController">
      <label for="repeatSelect1"> Field 2: </label>
      <select name="repeatSelect1" id="repeatSelect1" ng-model="data.repeatSelect1">
    <option ng-repeat="(key, val) in marksArray[0]" value="{{val}}">{{key}}</option>
  </select>
      <br />
      <strong>Selected student:</strong>
      <br />
      <textarea>{{chosen | json}}</textarea>
      <br />
      <br />
    </div>
  </body>

</html>

Java腳本

angular.module('myapp')
.controller("mainController", function ($scope){

    $scope.marksArray = [
      {name: "abc", Marks: "50"},
      {name: "xyz", Marks: "44"},
      {name: "abc", Marks: "35"},
      {name: "xyz", Marks: "55"},
      {name: "pqr", Marks: "67"},
      {name: "xyz", Marks: "65"},
      {name: "pqr", Marks: "45"}
    ];
  });

您在這里有幾處錯誤。

  1. 您忘記了包含angular.js: <script data-require="angular.js@1.5.0" data-semver="1.5.0" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular.js"></script>

  2. 您沒有正確聲明myapp。 使用angular.module('myapp',[])代替angular.module('myapp')

  3. 不要在options上使用ng-repeat,而要使用ng-options。 <select name="repeatSelect1" ng-options="item as item.name for item in marksArray" id="repeatSelect1" ng-model="chosen"></select>

添加此內容以顯示所選項目的總計:

$scope.updateTotal = function(item) {
      var t = 0;
      $scope.marksArray.forEach(function(i) {
        if(i.name == item.name){
          t += parseInt(i.Marks,10);
        }
      });
      $scope.total = t;
    }

nk

var totalMarks = 0;

$scope.marksCount = function(studentName) {
  for (var i = $scope.marksArray.length - 1; i >= 0; i--) {
    if (studentName == $scope.marksArray.name[i]) {
      var totalMarks = totalMarks + $scope.marksArray.Marks[i];
    }
  }
}

html

<!DOCTYPE html>
<html>

<head>
  <script data-require="angular.js@1.4.9" data-semver="1.4.9" src="https://code.angularjs.org/1.4.9/angular.js"></script>
  <link rel="stylesheet" href="style.css" />
  <script src="script.js"></script>
</head>

<body ng-app="myapp">
  <div ng-controller="mainController">
    <label for="repeatSelect1"> Student: </label>
    <select name="repeatSelect1" id="repeatSelect1" ng-model="selectedStudent">
      <option value=""> --Choose a student--</option>
      <option ng-repeat="student in students" value="{{student}}">{{student}}</option>
    </select>
    <br />
    <strong>Selected student:</strong> {{selectedStudent || 'no one'}}
    <br />
     <div ng-show="selectedStudent">
       <span>total marks:</span> {{totalMarksPerStudent(selectedStudent)}}  </br>
      <span>student count:</span> {{ totalStudentCount(selectedStudent) }}
     </div>
    <br />
    <br />
  </div>
</body>

</html>

腳本

angular.module('myapp',[])
.controller("mainController", function ($scope)
  {
    $scope.marksArray = [
      {name: "abc", Marks: "50"},
      {name: "xyz", Marks: "44"},
      {name: "abc", Marks: "35"},
      {name: "xyz", Marks: "55"},
      {name: "pqr", Marks: "67"},
      {name: "xyz", Marks: "65"},
      {name: "pqr", Marks: "45"}
    ];

    $scope.students = [];


    (function(){
      var auxArray = [];
       for (var i = 0; i < $scope.marksArray.length; i++){

           if(typeof auxArray[$scope.marksArray[i].name] === 'undefined'){
                $scope.students.push($scope.marksArray[i].name);
                auxArray[$scope.marksArray[i].name] = 1;
           }
       }
    })();

    $scope.totalMarksPerStudent = function(studentName){
      var marks = 0;

      for (var i = 0; i < $scope.marksArray.length; i++){
         if($scope.marksArray[i].name === studentName){
           marks = marks + parseInt($scope.marksArray[i].Marks);
         }
      }
      return marks
    }

    $scope.totalStudentCount =  function(studentName){
      var studentCount = 0;
      for (var i = 0; i < $scope.marksArray.length; i++){
          if($scope.marksArray[i].name === studentName)
            studentCount++;
      }

      return studentCount
    }
  });

塞子網址: http ://plnkr.co/edit/TEAr9yaf47VlaiYaxBKN

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM