Node.js 当通过NodeJS服务器提供服务时,不会更新html模板变量

Node.js 当通过NodeJS服务器提供服务时,不会更新html模板变量,node.js,angularjs,handlebars.js,Node.js,Angularjs,Handlebars.js,这是一个有点具体的问题,但我有点不知道答案 首先,一点背景。我一直在尝试学习angular,我想开始使用Node作为后端。我目前有一个可以在本地运行的教程应用程序,它只返回硬编码到主控制器中的数据 当我将文件移动到我的NodeJS服务器时,它停止了工作。以下是有效的方法: 文件加载正确-没有控制台错误,我可以查看源文件中的每个文件(index.html、app.js、maincontroller.js) 范围存在,变量已定义。我在mainController.js文件中放了一个console.

这是一个有点具体的问题,但我有点不知道答案

首先,一点背景。我一直在尝试学习angular,我想开始使用Node作为后端。我目前有一个可以在本地运行的教程应用程序,它只返回硬编码到主控制器中的数据

当我将文件移动到我的NodeJS服务器时,它停止了工作。以下是有效的方法:

  • 文件加载正确-没有控制台错误,我可以查看源文件中的每个文件(index.html、app.js、maincontroller.js)
  • 范围存在,变量已定义。我在mainController.js文件中放了一个console.log($scope),可以看到所有正确定义的变量
  • 非角度javascript工作-我可以在主控制器外部/内部放置警报,并且它们都正常工作(而且,console.log显然也可以工作)
我通过一个简单的Node.js服务器提供文件。我正在使用express和hbs。我最初使用的是压缩和0缓存长度,但后来删除了它们,结果没有变化

我遇到的具体问题是没有一个模板变量会更新。我已将其简化为以下测试代码。当在本地查看时,页面上会显示“我现在了解范围是如何工作的!”,从Cloud 9提供服务时,结构存在,但模板中的{{understand}}变量不起作用

index.html

<!DOCTYPE html>
<head>
<title>Learning AngularJS</title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
<script src="js/app.js"></script>
<script src="js/maincontroller.js"></script>
</head>
<body>
<div id="content" ng-app="MyTutorialApp" ng-controller="MainController">
    {{understand}}
</div>
</body>
maincontroller.js

app.controller("MainController", function($scope){
    $scope.understand = "I now understand how the scope works!";
});
server.js(云9上的节点服务器)


当我阅读时,一切都变得清晰了

"Handlebars.js is an extension to the Mustache templating language"
这是因为hbs使用{{}}作为分隔符和角度,所以html中的{{understand}永远不会变成角度,因为它首先被hbs解析和替换。如果你想将hbs与angular一起使用,你需要在你的应用程序配置中使用angulars$interpolateProvider更改你的分隔符,比如

$interpolateProvider.startSymbol('{/{');
$interpolateProvider.endSymbol('}/}');

你可以使用
\{{understand}}
,因为这将抵消你的hbs,并将你的角度放在首位。

这很有效!我确实试着查看是否可以更改车把上的分隔符,但没有这样的运气。非常感谢。我在这一点上肯定被难住了。不久前,当我尝试将它用于django时,我也遇到了同样的情况;)我不敢相信这个问题没有得到更多的选票。
"Handlebars.js is an extension to the Mustache templating language"
$interpolateProvider.startSymbol('{/{');
$interpolateProvider.endSymbol('}/}');