MeanIO的swig模板引擎不呈现angular度ng模型数据

我使用meanIO推荐的模板“swig”作为模板引擎。 但是我不能在angular度基础数据绑定中获得成功。

在NodeJS平台下的express服务器下面设置:

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'); }); 

上面的设置不会呈现填充文本框的实际angular度模型。

INDEX.HTML

  <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模型数据有什么问题?

varControls中的默认varControls更改为不是Angular使用的完全相同的东西。 他们正在碰撞。 http://paularmstrong.github.io/swig/docs/api/#SwigOpts

 var swig = require('swig'); swig.setDefaults({ varControls: ['<%=', '%>'] }); // or anything besides ['{{', '}}'] 

我从来没有试过自己,但是你需要的是在swig中替代Django的逐字标记,忽略了模板中的{{ }}{% %} ,让angularjs在客户端完成工作。 通过这个closures swig项目的GitHub问题 ,你应该用{% raw %}将你的angularjs块封装在模板中。

我找不到更详细的文档,但是我希望它给你一个大概的方向,以防止swig的语法和angularjs的语法冲突。

您还可以通过包含以下脚本块来修改angular度应用程序的默认渲染行为

  <script type="text/javascript"> var myApp = angular.module('myApp', [], function ($interpolateProvider) { $interpolateProvider.startSymbol('[{'); $interpolateProvider.endSymbol('}]'); }); </script>