Javascript 访问角函数中的Get变量
我正在node express和angular js中构建一个应用程序。我将一个变量传递给我的视图,如下所示Javascript 访问角函数中的Get变量,javascript,node.js,express,angularjs,Javascript,Node.js,Express,Angularjs,我正在node express和angular js中构建一个应用程序。我将一个变量传递给我的视图,如下所示 app.get('/profile', ensureAuthenticated, function(req, res){ res.render('profile', { user: req.user }); }); 我可以像这样访问视图中的变量(jade) 但是如何从控制器或指令中的角度函数访问此变量呢?我觉得您可能以不理想的方式混合了一些东西。我认为最好的方法是在Angular代
app.get('/profile', ensureAuthenticated, function(req, res){
res.render('profile', { user: req.user });
});
我可以像这样访问视图中的变量(jade)
但是如何从控制器或指令中的角度函数访问此变量呢?我觉得您可能以不理想的方式混合了一些东西。我认为最好的方法是在Angular代码中调用/profile并以这种方式获取数据 这样想,您刚刚使用node创建了一个Web服务,现在使用AngularJS从您的服务层调用Web服务。调用它的代码非常简单,可以在我链接的文档中找到
您可能还想查看,它使用node.js作为Web服务层,angularJS作为客户端UI层,与您设置的方式完全相同 谢谢James,FoodMe演示看起来是一个很好的学习资源。读了你的回复后,我的想法发生了很大的变化,我提出了自己的解决方案。我将添加它作为替代答案,因为注释中的代码很糟糕。为了提高我对节点和角度如何协同工作的理解,也许您或其他人可以对我们的两种解决方案进行比较,以及为什么或何时选择一种更好的解决方案进行评论 在我的express app.js中
app.get('/api/user', api.user);
在我的routes/api.js中
exports.user = function (req, res) {
res.json(req.user);
};
然后在我的角度控制器中
function profileCtrl($scope, $http) {
$http.get('/api/user/').success(function(data) {
$scope.user = data;
});
}
我写了一篇关于这个话题的博文- 总之,您有三种选择:
user
对象从express服务器传递到角度控制器,请使用ngInit
指令:
div(ng-controller="UserCtrl", ng-init="user= #{JSON.stringify(user)}")
将内容加载到Angular scope中,您应该能够通过调用$scope.user
在控制器内访问它
function UserCtrl($scope) {
console.log($scope.user);
}
ng init
不是以角度加载/存储常量的方法。介绍,角度的方式:
<script>
angular.module('$preloaded', []).constant('$preloaded', <%= preloaded %>)
</script>
角度.module('$preload',[])。常量('$preload',)
然后,您可以在代码中的任何位置插入
$preload
依赖项,并访问常量。这是一篇旧文章,但却是一篇相关文章。Zemrico的答案很好,但需要更新,因为jade/pug语法有一些变化。首先,他的答案中的链接已断开,应予以删除
如果你正在阅读这篇博文,请注意以下内容不再适用于帕格,不再接受插值作为属性
div(ng-controller="UserCtrl", ng-init="user= #{JSON.stringify(user)}")
相反,请用这个
div(ng-controller="UserCtrl", ng-init="user=" + JSON.stringify(user) )
祝贺你,感谢你提供了一个非常好的、干净的解决方案。正在寻找一种将数据从Express会话传递到Angular应用程序的方法。如果您使用的是hogan.js,这将有助于将变量传递到视图中链接现在已失效,而此方法对我不起作用。什么是#{符号?Zemirco的链接在这里仍然有效-我花了一些时间试图实现这一点,但这个答案确实不够完整。你的“预加载”是什么?
div(ng-controller="UserCtrl", ng-init="user=" + JSON.stringify(user) )