【问题标题】:MeanIO's swig template engine does not render the angular ng-model dataMeanIO 的 swig 模板引擎不渲染角度 ng-model 数据
【发布时间】:2014-06-10 19:09:59
【问题描述】:

我使用meanIO推荐的模块'swig'作为模板引擎。但我无法成功获得角度基本数据绑定。

NodeJS 平台的 express server 中的以下设置:

 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 数据的问题是什么???

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        我自己从未尝试过 swig,但您需要的是 swig 中 Django 的 verbatim 标签的替代品,它忽略模板中的任何 {{ }}{% %} 并让 angularjs 完成工作客户端。通过这个 swig 项目的 closed GitHub issue,您应该使用 {% raw %} 将您的 angularjs 块包装在模板中。

        我找不到更详细的文档,但我希望它能为您提供所需的大致方向,以防止 swig 的语法和 angularjs 的语法发生冲突。

        【讨论】:

          猜你喜欢
          • 2018-08-02
          • 1970-01-01
          • 2013-01-10
          • 2013-07-09
          • 1970-01-01
          • 1970-01-01
          • 2017-09-08
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多