[英]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.