MeanIO的swig模板引擎不会渲染角度ng模型数据

时间:2014-04-25 07:32:36

标签: node.js angularjs mean-stack swig-template

我使用了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');
});

上面的设置在填充文本框时不会渲染实际的角度模型。

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

3 个答案:

答案 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>