1

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

上述设置不会在填充文本框时呈现实际的角度模型。

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

4

3 回答 3

8

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

var swig = require('swig'); 
swig.setDefaults({ varControls: ['<%=', '%>'] }); // or anything besides ['{{', '}}']
于 2014-04-25T15:54:59.633 回答
0

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

    <script type="text/javascript">
        var myApp = angular.module('myApp', [], function ($interpolateProvider) {
            $interpolateProvider.startSymbol('[{');
            $interpolateProvider.endSymbol('}]');
        });
    </script>
于 2014-07-19T19:06:19.437 回答
0

我自己从未尝试过 swig,但您需要的是 swig 中 Django逐字标记的替代方法,它忽略模板中的任何{{ }}or{% %}并让 angularjs 在客户端完成工作。通过 swig 项目的这个已关闭的 GitHub 问题,您应该将 angularjs 块包装在模板中,并使用{% raw %}.

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

于 2014-04-25T08:20:38.230 回答