ExpressJS + AngularJS:沟通路线和控制器

我在我的express.jspath文件中有一个json对象,为了parsing它,我猜测最好的方法是发送给我的Angular controller ,以便在我看来是循环的。

路线/ myaccount.js

 router.post('/', function(req, res) { // form submitted var email = req.body.email var password = req.body.password login.returnSessionToken(email, password, (token) => { console.log("return token: ", token) var logged = require('../js/index') logged.returnUserData(token, (myData) => { res.render('myaccount', { myDataFromRoutes:myData }); }) }, (fail) => {console.log(fail)}) }) 

controller.js

 var controllers = angular.module('myApp.controllers', []); controllers.controller('IndexController', ['$scope', function($scope) { $scope.data= myDataFromRoutes; //how do I get the JSON object from my routes and pass it here? }]); 

myaccount.html

 <body ng-app="myApp"> <div ng-controller="IndexController"> <li ng-repeat="d in data"> {{ d }} </li> </div> </body> 

结构是否正确? 我无法想象如何使我的快速路线与我的angular度控制器沟通。

任何帮助都感激不尽。 谢谢!

既然你没有使用$http来AJAX的JSON对象,你可以使用ngInit 。 这是ngInitless数的预期用途之一。 使用Jade或其他服务器模板引擎来插入ng-init指令中的JSON对象:

 <body ng-app="myApp"> <div ng-controller="IndexController" ng-init="data = #{JSON.stringify(myDataFromRoutes)}"> <li ng-repeat="d in data"> {{d}} </li> </div> </body> 

由于您在控制器的作用域内进行操作,因此数据variables也将作为$scope.data在您的控制器中$scope.data

另外,(可能更好,实际上),你可以直接插入JavaScript中。 但是,这不会为包含作为文件的JS。 它必须是一个内联脚本:

 <script> var controllers = angular.module('myApp.controllers', []); controllers.controller('IndexController', ['$scope', function($scope) { $scope.data= #{JSON.stringify(myDataFromRoutes)}; }]); </script> 

注意:最近版本的帕格已经用上面的插值语法replace为:

 ng-init="data = `${JSON.stringify(myDataFromRoutes)}`"