angularjs - ExpressJS + AngularJS : communicate routes and controllers

标签 angularjs node.js express

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

相关文章:

javascript - 如何从 CSV 文件填充 Ng-Grid?

javascript - app.use 在 promise 中(bookshelf.js 和express-basic-auth)

javascript - Vue JS 应用程序上的 Passport JS 身份验证

javascript - 如何在 Nodejs 应用程序中共享配置变量

javascript - HTTP 请求中的 Angular 相对路径

javascript - Express app.post 被多次调用

python - AngularJS + Flask 客户端路由

node.js - 在express中使用路由器

node.js - 我如何订阅所有可用的 channel ?

node.js - 错误 : Cannot find module 'graphql/validation/rules/PossibleTypeExtensions'