我使用了meanIO推荐的模块' swig'用于模板引擎。但我无法在获得角度基本数据绑定方面表现出色。
在NodeJS平台上的快速服务器中设置:
app.engine('html', consolidate[config.templateEngine]);
app.set('view engine', 'html');
app.get('/', function(req,res){
var values = {
appName : config.appname
}
res.render('page1');
//res.redirect('/login');
});
上面的设置在填充文本框时不会渲染实际的角度模型。
<div>
<label>Name:</label>
<input type="text" ng-model="yourName" placeholder="Enter a name here">
<hr>
<h1>Hello {{yourName}}!</h1>
以下设置对我来说非常好。
app.engine('html', require('ejs').renderFile); // to render html files in response
app.set('view engine', 'html');
swig模块没有在{{}}内呈现ng-model数据有什么问题?
答案 0 :(得分:8)
将Swig中的默认varControls
更改为与Angular使用的完全相同。他们正在相撞。 http://paularmstrong.github.io/swig/docs/api/#SwigOpts
var swig = require('swig');
swig.setDefaults({ varControls: ['<%=', '%>'] }); // or anything besides ['{{', '}}']
答案 1 :(得分:0)
我从未试过自己,但你需要的是替换Djigo的swig中的逐字标记,忽略模板中的任何{{ }}
或{% %}
并让angularjs在客户端做的工作。通过此closed GitHub issue swig项目,您应该使用{% raw %}
将angularjs块包装在模板中。
我找不到更详细的文档,但我希望它能为您提供所需内容的总体方向,以防止swig语法和angularjs语法之间发生冲突。
答案 2 :(得分:0)
您还可以通过包含以下脚本块
来修改角度应用的默认渲染行为 <script type="text/javascript">
var myApp = angular.module('myApp', [], function ($interpolateProvider) {
$interpolateProvider.startSymbol('[{');
$interpolateProvider.endSymbol('}]');
});
</script>