在select之后对Array内的JSON数组进行ng-repeat

时间:2015-06-10 12:06:02

标签: javascript arrays json angularjs

我有一个项目,我有一个JSON对象包含' Standarder'这些' Standarder'有一些' indikatorer' (1-10)。我现在可以迭代它们并对它们进行排序,使它们以正确的顺序出现。

我也可以将它们放入和。但我想做一个ng-repeat,迭代我从列表中选择的特定标准,并显示该特定标准的indikatores。

我现在正在运行此代码:

Pluncker在这里:http://plnkr.co/edit/EM4OuXVbpi5HSVzr8PAq?p=preview



{
    "Standarder": [
        {
            "SektorID": 2,
            "SektorNavn": "Apotek",
            "StandardVersionID": 6,
            "Version": 2,
            "Udgave": 1,
            "IKAS_standard": [
                {
                    "StandardID": 170,
                    "Kode": "1.1.1",
                    "Kategori": "Organisatoriske standarder",
                    "Tema": "Ledelse",
                    "Titel": "Virksomhedsgrundlag (1/5)",
                    "Formaal": "At apoteket beskriver mission, vision og værdier for apoteket, og at sikre, at disse afspejles i apotekets samlede opgavevaretagelse.",
                    "Indhold": "Standarden er en rammestandard og sætter rammen for øvrige akkrediteringsstandarder.   Standarden er grundlæggende for apotekets virksomhed og afspejles i apotekets øvrige retningsgivende dokumenter.   Virksomhedsgrundlaget tager udgangspunkt i apotekets lovgivningsmæssige bemyndigelse og strategien for apotekerne i Danmark. Virksomhedsgrundlaget afspejler den forpligtelse og de rettigheder, som det indebærer at have en apotekerbevilling.   Virksomhedsgrundlaget består af mission, vision og værdier for de opgaver, apoteket varetager. Desuden vil et virksomhedsgrundlag ofte indeholde fokusområder/målsætninger, som apoteket skal arbejde med for at missionen og visionen kan opfyldes. Virksomhedsgrundlaget er integreret i den daglige ledelse og afspejles i apotekets ledelsesstruktur og personalepolitik.    Virksomhedsgrundlaget er grundlæggende for apotekets professionelle og etiske rolle over for kunder, samarbejdspartnere og personale. Der er således en klar sammenhæng mellem virksomhedsgrundlaget og de signaler, apoteket sender, eksempelvis via vindues- og apoteksudsmykning, varesortiment, pressekontakt, kundekontakt og kundedialog.    En del af denne standard omhandler implementering af virksomheds-grundlaget. Arbejdet med virksomhedsgrundlaget sker i dialog mellem ledelsen, kvalitetsgruppen og personalet.   Virksomhedsgrundlaget bliver herved en fælles platform for styring, drift og udvikling for alle ansatte på apoteket.   Apotekets evaluering af, hvorvidt der er sammenhæng mellem virksomhedsgrundlaget, apotekets praksis og de fastsatte kvalitetsmål, herunder personalets oplevelse af sammenhængen, kan eksempelvis afdækkes som en del af en større medarbejdertilfredshedsundersøgelse, kundetilfredshedsundersøgelse og i forhold til opfyldelse af servicemål.   Standarden har sammenhæng med:   Trin 1 og 4 i alle akkrediteringsstandarder, da virksomhedsgrundlaget danner grundlag for apotekets arbejde.   1.1.3 Planlægning og drift. Virksomhedsgrundlaget bruges som udgangspunkt for apotekets planlægning og drift.",
                    "Krydsreferencer": "",
                    "Anvendelsesomraade": "",
                    "IKAS_indikator": [
                        {
                            "IndikatorID": 1157,
                            "IndikatorNummer": 1,
                            "TrinNummer": 1,
                            "IndikatorTekst": "Der foreligger et virksomhedsgrundlag, der afspejler apotekets ønskede rolle i lokalsamfundet og sundhedssektoren og som beskriver apotekets:    mission vision værdier",
                            "IndikatorGruppeID": -1,
                            "IndikatorFundKategorier": [
                                {
                                    "FundKategoriID": 1,
                                    "FundKategoriTekst": "OK"
                                },
                                {
                                    "FundKategoriID": 2,
                                    "FundKategoriTekst": "Problem"
                                }
                            ]
                        },
                        {
                            "IndikatorID": 1158,
                            "IndikatorNummer": 2,
                            "TrinNummer": 1,
                            "IndikatorTekst": "Der foreligger retningslinjer, der beskriver, hvordan ledelsen vil sikre, at virksomhedsgrundlaget danner grundlag for det daglige arbejde.",
                            "IndikatorGruppeID": -1,
                            "IndikatorFundKategorier": [
                                {
                                    "FundKategoriID": 1,
                                    "FundKategoriTekst": "OK"
                                },
                                {
                                    "FundKategoriID": 2,
                                    "FundKategoriTekst": "Problem"
                                }
                            ]
                        },
                        {
                            "IndikatorID": 1159,
                            "IndikatorNummer": 3,
                            "TrinNummer": 2,
                            "IndikatorTekst": "Apotekeren og personalet kender virksomhedsgrundlaget, som danner grundlag for det daglige arbejde.",
                            "IndikatorGruppeID": -1,
                            "IndikatorFundKategorier": [
                                {
                                    "FundKategoriID": 3,
                                    "FundKategoriTekst": "Konsistent impl."
                                },
                                {
                                    "FundKategoriID": 4,
                                    "FundKategoriTekst": "Enkelte afv."
                                },
                                {
                                    "FundKategoriID": 5,
                                    "FundKategoriTekst": "Svag impl."
                                },
                                {
                                    "FundKategoriID": 6,
                                    "FundKategoriTekst": "Mangl. Impl."
                                }
                            ]
                        },
                        {
                            "IndikatorID": 1160,
                            "IndikatorNummer": 4,
                            "TrinNummer": 3,
                            "IndikatorTekst": "En gang årligt evaluerer ledelsen virksomhedsgrundlaget.",
                            "IndikatorGruppeID": -1,
                            "IndikatorFundKategorier": [
                                {
                                    "FundKategoriID": 1,
                                    "FundKategoriTekst": "OK"
                                },
                                {
                                    "FundKategoriID": 2,
                                    "FundKategoriTekst": "Problem"
                                }
                            ]
                        },
                        {
                            "IndikatorID": 1161,
                            "IndikatorNummer": 5,
                            "TrinNummer": 3,
                            "IndikatorTekst": "En gang årligt evaluerer ledelsen, hvorvidt der er sammenhæng mellem virksomhedsgrundlaget, apotekets praksis og de fastsatte kvalitetsmål, herunder personalets oplevelse af sammenhængen.",
                            "IndikatorGruppeID": -1,
                            "IndikatorFundKategorier": [
                                {
                                    "FundKategoriID": 1,
                                    "FundKategoriTekst": "OK"
                                },
                                {
                                    "FundKategoriID": 2,
                                    "FundKategoriTekst": "Problem"
                                }
                            ]
                        },
                        {
                            "IndikatorID": 1162,
                            "IndikatorNummer": 6,
                            "TrinNummer": 4,
                            "IndikatorTekst": "På baggrund af resultatet af kvalitetsovervågningen iværksætter ledelsen konkrete tiltag til eventuelle kvalitetsforbedringer og følger op på, om tiltagene har den ønskede effekt, jf. standard 1.2.1 Kvalitetsstyring.",
                            "IndikatorGruppeID": -1,
                            "IndikatorFundKategorier": [
                                {
                                    "FundKategoriID": 1,
                                    "FundKategoriTekst": "OK"
                                },
                                {
                                    "FundKategoriID": 2,
                                    "FundKategoriTekst": "Problem"
                                }
                            ]
                        }
                    ],
                    "IKAS_reference": [
                        {
                            "referencenummer": 1,
                            "referencetekst": "Lov om apoteksvirksomhed. LBK nr. 855 af 04/08/2008"
                        },
                        {
                            "referencenummer": 2,
                            "referencetekst": "Strategi for apotekerne i Danmark – Medicin og sundhed med omtanke"
                        }
                    ],
                    "IKAS_faq": []
                },






(function() {

  var stdCtrl = function($scope, $http) {

    var onSucces = function(response) {
      $scope.data = response.data.Standarder;
    };

    var onError = function(reason) {
      $scope.error = reason;
    };

    $http.post("http://testwebserver:65/Standard/Apotek").then(onSucces, onError);
    $scope.data = " .... ";
    $scope.repoSortOrder = "-SektorID";
    $scope.SektorID = "";
    $scope.Kategori = "";
    $scope.Tema = "";
    $scope.Titel = "";
    $scope.Formaal = "";
    
    $scope.onSelectStandard = function(input) {
      return (angular.isDefined(input) && input !== '');
    };

    $scope.renderPage = function(value) {
      $scope.IKAS_standard = [];
      angular.forEach($scope.Standarder.IKAS_standard[value], function(IKAS_standard, index) {
        console.log(IKAS_standard);
        angular.forEach(IKAS_standard, function(IKAS_standarder) {
          $scope.IKAS_standard.push(IKAS_standarder);
        });
      });
    };

  };

  var app = angular.module("stdViewer", []);
  app.controller("stdCtrl", ["$scope", "$http", stdCtrl]);

}());

<!DOCTYPE html>
<html>

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

<body ng-app="stdViewer" ng-controller="stdCtrl">
  <div ng-repeat="Standarder in data track by $index">
    <div ng-show="{{Standarder.SektorNavn != SektorNavn}}">
      <li ng-init="$parent.SektorID = Standarder.SektorID"></li>
    </div>
    <div ng-show="{{Standarder.SektorID == SektorID}}">
      <div ng-show="{{IKAS_standard.Kategori == Kategori}}"></div>
      <div ng-show="{{IKAS_standard.Titel != Titel}}">
        
        <div>
          <select ng-model="SelectedStandardId">
            <option ng-repeat="IKAS_standard in Standarder.IKAS_standard" value="{{IKAS_standard.StandardID}}">{{IKAS_standard.Kode}} {{IKAS_standard.Titel}}</option>
          </select>
        </div>
        
        <div>
          <br>
          <hr>
        </div>

        <div ng-model="SelectedStandardId" ng-show="onSelectStandard(SelectedStandardId)">
          <div ng-repeat="indikator in Standarder.IKAS_standard.IKASindikator | filter:StandardID= + SelectedStandardId">
            <ul>
              <li>Kode: {{std.IndikatorID}}</li>
            </ul>
          </div>
        </div>

      </div>
    </div>
  </div>
</body>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

将过滤器添加到第一个ng-repeat。然后重复过滤过的IKAS_standard集合:

试试这个:

<div ng-model="SelectedStandardId">
  <div ng-repeat="IKAS_standard in Standarder.IKAS_standard | matchId:SelectedStandardId">
    <div ng-repeat="indikator in IKAS_standard.IKAS_indikator">
      <ul>
         <li>Kode: {{indikator.IndikatorID}}</li>
      </ul>
    </div>
  </div>
</div>

完整来源

&#13;
&#13;
var app = angular.module("stdViewer", []);

app.controller("stdCtrl", ["$scope", "$http",
  function($scope) {
    $scope.data = [{
      "SektorID": 2,
      "IKAS_standard": [{
        "StandardID": 170,
        "Kode": "1.1.1",
        "IKAS_indikator": [{
          "IndikatorID": 1157
        }, {
          "IndikatorID": 1158
        }, {
          "IndikatorID": 1159
        }]
      }, {
        "StandardID": 200,
        "Kode": "1.1.2",
        "IKAS_indikator": [{
          "IndikatorID": 2001
        }, {
          "IndikatorID": 2002
        }, {
          "IndikatorID": 2003
        }]
      }]
    }];
  }
]);

app.filter('matchId', function() {
  return function(items, standardID) {
    var filtered = [];
    angular.forEach(items, function(item) {
      if (item.StandardID == standardID) {
        filtered.push(item);
      }
    });
    return filtered;
  }
});
&#13;
<head>
  <script src="https://code.angularjs.org/1.3.15/angular.js"></script>
  <script src="script.js"></script>
</head>

<body ng-app="stdViewer" ng-controller="stdCtrl">
  <div ng-repeat="Standarder in data track by $index">
    
    <div>
      <select ng-model="SelectedStandardId">
        <option ng-repeat="IKAS_standard in Standarder.IKAS_standard" value="{{IKAS_standard.StandardID}}">{{IKAS_standard.Kode}} {{IKAS_standard.Titel}}</option>
      </select>
    </div>

    <div ng-model="SelectedStandardId">
      <div ng-repeat="IKAS_standard in Standarder.IKAS_standard | matchId:SelectedStandardId">
        <div ng-repeat="indikator in IKAS_standard.IKAS_indikator">
          <ul>
            <li>Kode: {{indikator.IndikatorID}}</li>
          </ul>
        </div>
      </div>
    </div>
    
  </div>
</body>
&#13;
&#13;
&#13;