从express到angularJS公开一个对象

我想创build一个数据对象,通过在angular度控制器中可用的快速检索。 现在我可以使用数据对象在一个玉的模板,如果我访问它如此…

#{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(),但一个常量只能包含一个string。

如何在angular度控制器内部提供一个可用的对象。

在此先感谢您的时间。

让我来解释一下你的整个往返行程,正确的请求来自angular度来表示,并将回应发送回angular度。

而不是res.render(..) ,您应该使用res.json(..)将数据发送回angular客户端。 如果你想使用承诺是好的,但我下面的例子是简单的callback。

 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度控制器中创build方法来从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. }); } 

让我知道如果你需要更详细的答案。