簡體   English   中英

使用Angular從JSON加載數據

[英]Loading data from JSON using Angular

我有這樣的代碼:

JBenchApp.controller('CaseListCtrl', ['$scope',
  function ($scope) {
      // Case list stuff here
      $scope.cases = [
          {
              'number': '30-2013-0069378-PR-PL-CJC',
              'title': 'Baumgartner - Probate',
              'sequence': '',
              'time': '9:00 am',
              'event': 'Petition for Final Distribution',
              'event2': ''
          },
          {
              'number': '30-2013-00649408-PR-PL-CJC',
              'title': 'Dupaquier - Probate',
              'sequence': '',
              'time': '9:00 am',
              'event': 'Petition - Other',
              'event2': ''
          },
          {
              'number': '30-2011-00510275-PR-PL-CJC',
              'title': 'Baker - Conservatorship',
              'sequence': '',
              'time': '9:00 am',
              'event': 'Accounting',
              'event2': 'Review Hearing'
          },
          {
              'number': '30-2010-00334622-PR-PL-CJC',
              'title': 'Montero - Minors Compromise',
              'sequence': '',
              'time': '9:00 am',
              'event': 'Review Hearing',
              'event2': ''
          },
          {
              'number': '30-2011-005260282-PR-PL-CJC',
              'title': 'Reed - Conservatorship',
              'time': '9:00 am',
              'event': 'Petition - Other',
              'event2': ''
          }
      ];

      $scope.departments = [
          {
              'dept': '1'
          },
          {
              'dept': '1A'
          },
          {
              'dept': '2'
          },
          {
              'dept': '2A',
          },
          {
              'dept': '2B'
          },
          {
              'dept': '2C'
          },
          {
              'dept': '2D'
          },
          {
              'dept': '3'
          },
          {
              'dept': '4'
          },
          {
              'dept': '5'
          },
          {
              'dept': '6'
          },
          {
              'dept': '7'
          },
          {
              'dept': '8'
          },
          {
              'dept': '9'
          },
          {
              'dept': '11'
          },
          {
              'dept': '12'
          },
          {
              'dept': '13'
          },
          {
              'dept': '14'
          },
          {
              'dept': '15'
          },
          {
              'dept': '16'
          },
          {
              'dept': '17'
          },
          {
              'dept': '18'
          },
          {
              'dept': '19'
          },
          {
              'dept': '20'
          },
          {
              'dept': '21'
          },
          {
              'dept': '22'
          },
          {
              'dept': '23'
          }
      ];


  }]);

我想將數據移動到外部文件。 我現在有一個cases.js文件(.json在我的本地計算機上不起作用),其數據如下:

[
          {
              'number': '30-2013-0069378-PR-PL-CJC',
              'title': 'Baumgartner - Probate',
              'sequence': '',
              'time': '9:00 am',
              'event': 'Petition for Final Distribution',
              'event2': ''
          },
          {
              'number': '30-2013-00649408-PR-PL-CJC',
              'title': 'Dupaquier - Probate',
              'sequence': '',
              'time': '9:00 am',
              'event': 'Petition - Other',
              'event2': ''
          },
          {
              'number': '30-2011-00510275-PR-PL-CJC',
              'title': 'Baker - Conservatorship',
              'sequence': '',
              'time': '9:00 am',
              'event': 'Accounting',
              'event2': 'Review Hearing'
          },
          {
              'number': '30-2010-00334622-PR-PL-CJC',
              'title': 'Montero - Minors Compromise',
              'sequence': '',
              'time': '9:00 am',
              'event': 'Review Hearing',
              'event2': ''
          },
          {
              'number': '30-2011-005260282-PR-PL-CJC',
              'title': 'Reed - Conservatorship',
              'time': '9:00 am',
              'event': 'Petition - Other',
              'event2': ''
          }
];

我將代碼更改如下:

JBenchApp.controller('CaseListCtrl', ['$scope', '$http', 
  function ($scope, $http) {
      // Case list stuff here
      $http.get('json/cases.js').success(function (response) {
          $scope.cases = response;
      });

      $scope.departments = [
          {
              'dept': '1'
          },
          {
              'dept': '1A'
          },
          {
              'dept': '2'
          },
          {
              'dept': '2A',
          },
          {
              'dept': '2B'
          },
          {
              'dept': '2C'
          },
          {
              'dept': '2D'
          },
          {
              'dept': '3'
          },
          {
              'dept': '4'
          },
          {
              'dept': '5'
          },
          {
              'dept': '6'
          },
          {
              'dept': '7'
          },
          {
              'dept': '8'
          },
          {
              'dept': '9'
          },
          {
              'dept': '11'
          },
          {
              'dept': '12'
          },
          {
              'dept': '13'
          },
          {
              'dept': '14'
          },
          {
              'dept': '15'
          },
          {
              'dept': '16'
          },
          {
              'dept': '17'
          },
          {
              'dept': '18'
          },
          {
              'dept': '19'
          },
          {
              'dept': '20'
          },
          {
              'dept': '21'
          },
          {
              'dept': '22'
          },
          {
              'dept': '23'
          }
      ];


  }]);

我的部分看起來像這樣:

<div class="row" ng-show="$parent.loggedin">
    <div class="col-sm-12 calselectrow">
        <span class="glyphicon glyphicon-calendar calicon"></span>
        <input type="text" id="calpick" ng-model="date"  jdatepicker />
        <a href="#" class="btn btn-primary flat-edge">>></a>
        <span class="bluedept">Department:</span>
        <select class="selectpicker deptpicker" selectpicker ng-controller="CaseListCtrl">
            <option ng-repeat="department in departments">{{department.dept}}</option>
        </select>
    </div>
</div>
<div class="row" ng-show="$parent.loggedin">
    <div ng-controller="CaseListCtrl">
        <div class="col-sm-8 col-sm-offset-2 caselist" ng-repeat-start="case in cases track by $index">
            <div class="sequence">
                <input type=text class="seq-box" size="1" value="{{case.sequence}}" />
            </div>
            <div class="casetitle">
                <a href="/case/{{case.number}}" class="caselink">{{case.number}}</a>
                <a href="/case/{{case.number}}" class="btn btn-xs btn-danger calicon-view">
                    <span class="glyphicon glyphicon-calendar"></span>
                </a>
                <a href="/case/{{case.number}}" class="btn btn-xs btn-danger calicon-view">
                    <span class="glyphicon glyphicon-user"></span>
                </a>
                {{case.title}}
            </div>
        </div>
        <div class="col-sm-8 col-sm-offset-2 caselist-bottom">
            <div class="col-sm-9 col-sm-offset-1">
                <div class="hearing-time">{{case.time}}</div>
                <div class="hearing-title">{{case.event}}</div>
            </div> 
        </div>
        <div ng-repeat-end></div>
    </div>
</div>

當我運行它時,我得到了一堆根本沒有數據的行。 如果我刪除“ $ index跟蹤”,則會收到有關重復鍵的錯誤。 如何使這項工作能夠顯示我的數據?

此代碼不會被解釋為JavaScript,因為這是一個安全問題。 您將需要使用jsonp或在響應正文中將此數據作為json返回。

嘗試這個:

$http({method: 'JSONP', url:<your url> + ?callback=JSON_CALLBACK})

並更改您的回復以返回:

JSON_CALLBACK ([your array]);

答案是JSON無效。 我本應該使用雙引號時使用單引號。 我還用分號結束了文件,必須將其省略。 當我這樣做時,它會完美運行。

暫無
暫無

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

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