gpt4 book ai didi

angularjs - ExpressJS + AngularJS : communicate routes and controllers

转载 作者:太空宇宙 更新时间:2023-11-04 00:23:50 25 4
gpt4 key购买 nike

我的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com