簡體   English   中英

服務器端數據成角度

[英]server side data in angular

我正在嘗試使用節點請求模塊發出GET請求。 我正在向Coursera API提出請求。 由於api使用的是CORS。 因此,我必須提出服務器端請求。 但是,關鍵是如何在index.html中使用此數據來動態填充數據。

在這里,我將整個數據保存到文件中。 有什么辦法可以將此數據提供給Angular控制器。

簡而言之,我想在我的角度應用程序中使用來自Coursera api的數據。 我已經使用過客戶端,因此對服務器端了解較少。

var request = require("request");
var fs = require("fs");
request("https://api.coursera.org/api/courses.v1").pipe(fs.createWriteStream("data.json"));

您可以通過兩種方式將數據放入index.html:

1)使用玉(哈巴狗)渲染:

var COURSERA_DATA = null;
router.get('/', function (req, res) {
    if (!COURSERA_DATA) {
        request("https://api.coursera.org/api/courses.v1",function(err,res,body) {
             COURSERA_DATA = body; /* verify first */
             res.render('index', {data: COURSERA_DATA});
        });
    } else {
       res.render('index', {data: COURSERA_DATA});
    }
});

然后在index.html中:

script(text/javascript).
  var theDATA = !{JSON.stringify(data)}; // inserted by jade

最后是angular1

app.controller('AnyController',function() {
    var vm = this;
    vm.data = theDATA; 
});

2)客戶對作為Coursera API的URL的請求

router.get('/coursera', function (req, res) {
    request("https://api.coursera.org/api/courses.v1").pipe(res);
}

亞倫

為什么在Angular中直接消耗數據的問題? 就像是:

app.controller('controller', function($scope, $http) {
    $scope.getCursera = function() {            
        $http({
            url: "https://api.coursera.org/api/courses.v1",
            method: "GET",
            contentType: "application/json"
        }).success(function(data) {                
            $scope.jsonResponse = data;               
        }).error(function(err) {                
            console.log(err);
        });
    };
});

如果Coursera允許跨域,則可以使用。 JSON響應將在范圍內設置,以便您可以在視圖中顯示或執行任何操作。

您可以嘗試實現一個簡單的api,這樣將響應發送回控制器。.在服務器端..(演示)

var request = require('request');

router.get('/coursera', function (req, res,next) {

request.get(
    'https://api.coursera.org/api/courses.v1',
    { json: { key: 'value' } },
    function (error, response, body) {
        if (!error && response.statusCode == 200) {
            res.send(body); //response from coursera
            // if you are using this as middleware write next()
        }else {
            res.send(new Error("Error while connecting to coursera"));
             // if you are using this as middleware write next(err)
    }
);
}

並在角度控制器中..

app.controller('controller', function($scope, $http) {
    $scope.getCoursera = function() {            
        $http({
            url: "baseURL/coursera",
            method: "GET",
        }).success(function(data) {                
            $scope.data = data;               
        }).error(function(err) {                
            console.log(err);
        });
    };
});

暫無
暫無

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

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