[英]How to GET an array from server-side using AngularJS?
因此,我正在為團隊開發一個Web應用程序。 我已經實現了登錄和注冊頁面,並且我的小組中的某些成員正在服務器(帶有Express框架的node.js)和數據庫方面工作,而我在葉狀端/客戶端方面工作。使用angularjs框架。 我需要在angularjs中創建一個“團隊列表頁面”,該頁面基本上會獲取一組團隊名稱(一個登錄的人可能會與他/她一起使用多個不同的軟件開發人員組)。
team_list.html的服務器端尚未實現,但是將在客戶端完成后進行。
我的問題是:我不確定如何從angularjs的服務器/數據庫端獲取數組。 我知道我應該以某種方式使用ng-repeat指令以及GET方法,但我不確定如何做到這一點。 特別是如何使用數組。
到目前為止,這是我的team_list.html代碼:
var page = angular.module('teamListPage', []); page.controller('listController', function($scope, $http) { console.log("inside the controller"); //need to figure out how to pass info to server to retrieve the correct page $scope.submit = function() { console.log("inside the login function"); console.log() } $scope.enterTeamPage = function() {}; }
<!DOCTYPE html> <html> <head> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> title>Team List</title> </head> <body> <h1> Welcome to Your Team Pages! </h1> <div ng-controller="listController"> <form id="Teams" ng-app="teamListPage"> <fieldset> <legend>Your Teams</legend> <ul> <div ng-repeat"x in teamList"> <td>{{x.Name}}</td> <p> <input type="button" id="enter" name="enter" value="Enter Home Page" /> </p> </div> </ul> </fieldset> </form> </div> <p> <input type="button" id="Create" name="Create" value="Create New Team" /> </p> </body> </html>
您可以使用$http
服務:
$http.get('url').then(function (response) {
// Success case
$scope.teamList = response.data;
}, function (error) {
// Error case
});
查看$ http文檔,以了解有關該服務的更多信息。
在您的控制器中使用GET方法和$ HTTP請求來請求數據,您可以像這樣簡單地執行此操作
$scope.teamList = [];
$http.get("url_to_fetch_data.js")
.then(function(response) {
$scope.teamList = response.data;//This Data should be Array of Objects with properties
});
//然后您可以在視圖中重復
<div ng-repeat"x in teamList">
<td>{{x.Name}}</td>
</div>
我們幾乎只使用$ resource處理Angular中的請求。 您需要將其作為外部模塊包含在HTML中,並將其添加到您創建的angular模塊的依賴項數組中,但是它可以大大簡化外部資源的使用並開箱即用地支持CRUD操作。
因此,在您的html中添加:
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.8/angular-resource.min.js"></script>
當然,這可以來自您喜歡的任何CDN。
然后在您的JavaScript中,將此行更改為:
var page = angular.module('teamListPage', ['ngResource']);
創建控制器時,請確保注入$ resource:
page.controller('listController', function($scope, $resource) {} // You don't need $http if you use $resource.
現在,您可以在控制器中執行以下操作:
$scope.teamList = $resource('teams_url').query();
當然,傳遞給$ resource函數的url將是您的nodejs開發人員決定的,但這足以在控制器中獲取數據並准備顯示。 要在視圖上顯示它,只需按照您的建議添加ng-repeat,類似於:
<div ng-repeat="member in teamList">{{member.name}}</div>
這里有一些警告:
$scope.teamList.$promise.then(function() { // do something here });
。 但是,您並不需要僅僅將其放入視圖中,因為$ resource在最終從服務器返回時會自動將所有數據放入數組或對象中。 這意味着ng-repeat會盡快將其拿起並顯示給您。 $ resource還提供一個.get()方法和一個.save()方法,該方法獲取單個記錄,該方法使用您傳遞的對象創建發布請求(例如$resource('some_api_url').save({name: 'John'});
我喜歡並使用它,因為它是一個非常干凈的界面,並且使ajax請求的處理非常簡單直觀。 盡管還有許多其他方法可以執行此操作,但這是我們在工作中所做的事情,似乎使事情變得非常清晰和易於理解。
有關其工作方式以及如何在項目中使用它的更多信息,請參見$ resource文檔 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.