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>