gpt4 book ai didi

javascript - 将对象从express公开到angularJS

转载 作者:太空宇宙 更新时间:2023-11-04 00:58:23 25 4
gpt4 key购买 nike

我想在 Angular Controller 中创建一个通过 Express 检索的数据对象。现在,如果我像这样访问它,我可以在 Jade 模板中使用数据对象......

#{data.mens.pants.jeans}

快捷代码

api.get(query, options)
.then(function(results) {
log.info('api response received. rendering...');
res.render('../mens/views/index', {
data: {
query: query,
item: results
}
});
})
.error(function(err) {
errors.renderError(res, err);
});
});

我不想要什么

  • 进行另一个 $http 调用
  • 使用 ng-init

我尝试过使用 .constant() 但常量只能包含字符串。

如何使来自express的对象在 Angular Controller 内部可用。

预先感谢您的宝贵时间。

最佳答案

让我为您解释一下整个往返过程,从来自 Angular 的请求到 Express,再到将响应发送回 Angular。

您应该使用 res.json(..) 而不是 res.render(..) 将数据发送回 Angular 客户端。如果你想使用 Promise,那很好,但我下面的示例是简单的回调。

api.get = function(req,res){
//use req.params.<param_name> to get the parameter passed from angular.
<some model>.someMethod({.params..},function(err,results){
if(err){
res.send(err);
}
res.json(results);
});
};

假设您已经为上面的代码定义了适当的路由,并且可以通过 http://localhost:3000/api/data/:id 访问它。

所以在前端Angular中,可以使用$resource或 $http 服务,在您需要数据时调用您的后端 API。

var module = angular.module('app.services',['ngResource']);

module.factory('MyABCService',function($resource){
return $resource('api/data/:id',
{
id: '@id'
},
{
'update': { method:'PUT' }
},
{
'get': { method: 'GET', isArray: false }
},
{
'delete': { method: 'DELETE'}
}
);
});

现在在 Angular Controller 中创建方法以从 API 获取数据。

$scope.searchABC = function(_id){
$scope.myABCService = new MyABCService();
$scope.myABCService.$get({id:_id},function(result){
//now AngularJS has two way data binding, so use result to assign values to your scope variables.
});
}

如果您需要更详细的答案,请告诉我。

关于javascript - 将对象从express公开到angularJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28439706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com