2014-10-21 51 views
-1

我在这里尝试使用把手时做了什么错误?把手不能正确compl声称我不通过字符串

HTML

<!DOCTYPE html> 
<html> 
<head> 
<script src="//code.jquery.com/jquery-1.11.1.min.js"></script> 



</script> 
<script src="//code.jquery.com/jquery.min.js"></script> 
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet" type="text/css" /> 
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script> 
<script src="//cdnjs.cloudflare.com/ajax/libs/handlebars.js/1.0.0/handlebars.js"></script> 
    <meta charset="utf-8"> 
    <title>JS Bin</title> 
</head> 
<body> 
    <div class="_conv_logo_login_container"> 

    </div> 
</body> 
</html> 

    <script type="text/x-handlebars-template" id="tools_links_template"> 

    <ul class="dropdown-menu" role="menu"> 

    {{#tools_links}} 

    <li> 

     <a id="{{id}}" href="{{href}}">{{human_readable}}</a> 

    </li> 

    {{/tools_links}} 


    </ul> 

JS

var data = { 
    "tools_links": [ 
     { 
      "id": "assignments", 
      "human_readable_report": "Assignments", 
      "href": "site.com/assignments", 
      "attrs": { 
       "data-order": 1 
      }, 
      "submenu": "" 
     }, 
     { 
      "id": "reporting", 
      "human_readable": "Reporting", 
      "href": "site.com/reporting", 
      "attrs": { 
       "data-order": 2 
      }, 
      "submenu": "" 
     } 
    ] 
}; 


var source = $("#tools_links_template").html(); 
var template = Handlebars.compile(source); 

$("._conv_logo_login_container").html(template(data)); 

我不断收到错误:

Uncaught Error: You must pass a string or Handlebars AST to Handlebars.compile. You passed undefined 

我试图{{#with tools_links}}和简单{{items}}

JSBIN

+0

还应该在问题中包含HTML - 这就是模板所在的位置。 – Luke 2014-10-21 21:33:33

+0

编辑它。 HTML是在jsbin中,但链接很难注意到...... SO和文本之间的链接没有太大对比。 – 2014-10-21 21:58:12

回答

0

两个问题:

  1. 你的模板是不是<html></html>标签内。将模板<script>标记放置在<head>的内部或<body>的底部。
  2. 您的模板没有结尾</script>标记。

jQuery搜索<head><body>内的元素,而不是在HTML文件的所有文本中。

+0

很高兴知道,谢谢。 – 1252748 2014-10-21 21:20:07