0

我有一个带有把手的简单示例,但我无法让它工作!请帮忙。我正在尝试让谷歌应用引擎留言簿与车把而不是 jinja2 一起使用

HTML/模板代码如下:

  Hello {{user.nickname}}
  <h2>Top 10 Most Recent Guestbook Entries</h2>
      {{#each greetings}}
          <br>
           <small>[<i>{{date.ctime}}</i>]</small>
           <b>
             {{#if author}}
               <code>{{author.nickname}}</code>
             {{else}}
               <i>anonymous</i>
             {{/if}}
          </b>
          wrote:
        {{comment}}
      {{/each}}
 </script>
 <div id="comment_content"> </div>
 <form id="comments" action="">
    <div><textarea id="comment" name="content" rows="3" cols="60"></textarea></div>
    <div><input id="comment_button" type="button"  value="submit"></div>
 </form>
 <a href="{{ url }}">{{ url_linktext }}</a>

这是JS代码:

<script>
   $(document).ready(function() {
      var source   = $("#entry-template");
      var srcHTML =source.html();    
      var template = Handlebars.compile(srcHTML);
   // put all your jQuery goodness in here.
      $("#comment_button").click(function(event) {

          var data = JSON.stringify({
            "login": "/_ah/login?continue=http%3A//localhost%3A8080/show",
            "logout": "/_ah/login?continue=http%3A//localhost%3A8080/show&action=Logout",
            "user": {
              "nickname": "dummy",
              "email": "dummy@me.com"
            },
          "greetings": [
          {
            "comment": "COMMENT1",
            "date": {
                "ctime": "Sun Feb 10 23:20:21 2013"
            },
            "author": {
                "nickname": "dummy",
                "email": "dummy@me.com"
            }
          }
        ]
      })
      var html = template(data);
      console.log(html);
      $("#comment_content").html(html);
      });
   });
 </script>

这是我引用 Handlebar 源的方式

Can someone please help?

谢谢一米

4

1 回答 1

0

您的大问题是您正在使用JSON.stringify为编译的模板函数准备数据:

var data = JSON.stringify({ ... });
var html = template(data);

当它只需要对象时,这最终会向template函数传递一个字符串(这是您想要的数据的 JSON 表示形式)。放下JSON.stringify,事情会开始表现得更好:

var data = { ... };
var html = template(data);

演示:http: //jsfiddle.net/ambiguous/Axmbd/

此外,您的 HTML 的这一部分:

<a href="{{ url }}">{{ url_linktext }}</a>

似乎不在模板内,<script>因此不会填写 and。您可以通过将其移动{{url}}到正确的位置来解决此问题。{{url_linktext}}<a>

于 2013-02-11T17:18:30.810 回答