如何从angularjs访问variablesexpression式

第一

exports.render = function(req,res){ res.render('index', { title: 'welcome', username : req.user ? req.user :'' }); }; 

我想导出要使用的对象 req.user

 h2 Hello #{username.username} h2 Hello #{username} 

在翡翠我可以使用它

 div(ng-app='IndexController') {{ #{username} | getUserData }} 

但是如果我想要得到它的angular度,它不能使用

 mainAppModule.filter('getUserData', function () { return function (name) { if (name) console.log(name.username + "xxxxxxxxxxxxxxxxxxxxxxxxqqqqqqqqqq"); return 'Hellox, '; }; }); 

我该怎么做? 如何获得req.user以供req.user使用。如果有其他方法可以让angular色使用对象请告诉我。 非常感谢。

 function MyCtrl($scope) { $scope.req = {'user':'scope user'}; this.req1 = {'user':'alias user'} ; } 
 <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> <div ng-app=""> <div ng-controller="MyCtrl as myCont"> {{req.user}} <br/> {{myCont.req1.user}} </div> </div> 

似乎你需要传递你的请求对象到你的angular码。 我可以build议的是尝试做一个模块,将作为一个模型玉石呈现对象如下:

index.jade

 div(ng-controller="myController as ctrl") h2 Title: {{ ctrl.title | myFilter }} h2 Username: {{ ctrl.username | myFilter }} script. angular.module('jadeData',[]) .factory('jadeDataFactory',function(){ //model service to set objects retireved from jade return { 'title': "#{title}", 'username': "#{username}" }; }); script(src="/js/app.module.js") 

一旦完成,您可以访问主模块的控制器中的服务模型

app.module.js

  angular.module("myApp",['jadeData']) .controller("myController",function(jadeDataFactory){ var that = this; that.title = jadeDataFactory.title; that.username = jadeDataFactory.username; }) .filter("myFilter",function(){ return function(v){ if(v) console.log('Inside filter value: ',v); return v+' Modified'; } }); 

这样你可以注入jadeDataFactory到任何需要的控制器/服务

解释 :实际上,Jade是在服务器端渲染的,如果你写{{ #{username} | getUserData }} {{ #{username} | getUserData }}然后渲染器无法正确获取它,更好的方法是将其存储在服务模型中并在需要的控制器中访问它。