我的 express.js
路由文件中有一个 json
对象,为了解析它,我猜测最好的方法是发送到我的 Angular controller
以在我的 View 中循环。
routes/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 Controller 进行通信。
任何帮助将不胜感激。谢谢!
最佳答案
由于您没有使用 $http
来 AJAX JSON 对象,因此可以使用 ngInit
。这是 ngInit 的少数预期用途之一。使用 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>
由于您是在 Controller 的作用域内进行操作,因此数据变量也将在 Controller 中以 $scope.data
的形式提供。
或者,(实际上可能更好)您可以直接在 JavaScript 中进行插值。但这对于作为文件包含的 JS 不起作用。它必须是内联脚本:
<script>
var controllers = angular.module('myApp.controllers', []);
controllers.controller('IndexController', ['$scope', function($scope) {
$scope.data= #{JSON.stringify(myDataFromRoutes)};
}]);
</script>
注意:最新版本的 Pug 已将上述插值语法替换为以下内容:
ng-init="data = `${JSON.stringify(myDataFromRoutes)}`"
关于angularjs - ExpressJS + AngularJS : communicate routes and controllers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43596423/