如何从Node.js向AngularJS控制器传递参数?
从Mustache模板传递Token到AngularJS控制器的实现方案
看起来你已经搞定了Node.js端到Mustache模板的token传递,接下来要让AngularJS的ResetController拿到这个值对吧?我给你几个简单靠谱的实现方式:
1. 用Angular Constant注入Token(推荐)
这种方式最贴合Angular的架构设计,把token作为全局常量注入到应用中:
首先在Mustache模板的头部添加一段脚本,把token输出为Angular的constant:
<script> // 若token包含特殊字符,用{{{token}}}避免HTML转义 angular.module('eyeApp').constant('RESET_TOKEN', '{{token}}'); </script>
然后在你的ResetController中直接注入这个常量就能使用了:
angular.module('eyeApp').controller('ResetController', ['RESET_TOKEN', function(RESET_TOKEN) { const vm = this; vm.resetToken = RESET_TOKEN; // 接下来就可以用这个token发起重置密码的API请求了 console.log('重置Token:', vm.resetToken); }]);
2. 用ng-init直接绑定到作用域
如果不想用constant,也可以通过ng-init把token直接绑定到控制器的作用域:
修改你的<body>标签,添加ng-init属性:
<body ng-app="eyeApp" ng-controller="ResetController" ng-init="resetToken = '{{token}}'">
然后在控制器中从$scope获取:
angular.module('eyeApp').controller('ResetController', ['$scope', function($scope) { const vm = this; vm.resetToken = $scope.resetToken; }]);
3. 完整整合后的页面代码示例
结合你的原始页面代码,修改后大概是这样:
<!DOCTYPE html> <html> <head> <!-- 你的其他头部资源 --> <script> angular.module('eyeApp').constant('RESET_TOKEN', '{{token}}'); </script> </head> <body ng-app="eyeApp" ng-controller="ResetController"> <div id="wrapper"> <div id="layout-static"> <div class="static-content-wrapper"> <div class="static-content"> <div id="wrap" ui-view class="mainview-animation animated"></div> <!--wrap --> </div> <footer role="contentinfo" ng-show="!layoutLoading" ng-cloak> <!-- 你的footer内容 --> </footer> </div> </div> </div> </body> </html>
一些注意事项
- 转义问题:如果你的token包含HTML特殊字符(比如
&、<等),记得用Mustache的三重大括号{{{token}}}输出,避免被转义导致token失效。 - 安全提示:重置密码的token是敏感信息,一定要确保你的网站使用HTTPS传输,防止token被中间人拦截。另外后端一定要在使用token前校验其有效性和过期时间,避免恶意利用。
内容的提问来源于stack exchange,提问作者devRena
相关产品推荐
相关产品推荐

