使用JavaScript和Mustache获取“无法调用未定义的方法”错误

时间:2013-08-12 22:07:49

标签: javascript html mustache

我正在使用HTML,JavaScript和jQuery Mobile制作一种图片库。我正在关注JQM演示:http://jquerymobile.com/demos/1.3.0-beta.1/docs/demos/swipe/swipe-page.html 制作图库,但它为每张图片使用完全不同的HTML页面。我的计划是画廊是动态的,所以我没有一定数量的页面或一组图片名称等,我想我可能会使用Mustache制作图片模板,并动态创建页面。以下是代码的基本布局:

index.html

<!DOCTYPE html>

<html>
<head>
    ...
    <script src="mustache-0.7.0-min.js" type="text/javascript"></script>
    <script src="mobile.js" type="text/javascript"></script>
    <script id="test_template" type="text/html">
        <h1>{{firstName}} {{lastName}}</h1>
        <p>{{tempText}}</p>
    </script>
    ...
</head>
...

然后在mobile.js

function showPerson()

{


    var person = 
        {
            firstName: "Feaf",
            lastName:  "McFeaf",
            tempText:  "Hello Feaf"
        };

    var personTemplate = document.getElementById("test_template").innerHTML;

    var html = Mustache.to_html(x, person);

}

所以它就像你能得到的一样基本。但是,当我在本地服务器上运行Web应用程序(在Chrome中),并且我单步执行此功能时,我在Mustache.to_html行收到错误,说

Uncaught TypeError: Cannot call method 'to_html' of undefined

我是网络开发的新手,也是Mustache的新手,所以我不知道是什么导致了这个错误。我尝试过调用其他Mustache方法,比如render,但会出现同样的错误。 <script src=...>是不是足以让mobile.js可以访问Mustache库?有人对我可能做错了什么有任何提示吗?

感谢您提供任何信息,并告诉我应该添加的任何其他信息。

编辑:

糟糕!忘了在脚本部分包含我有小胡子的事实,我编辑以反映这个事实。为了清楚起见,我已经(并且一直有)胡子包括在内!

另外,我尝试了@Zorayr使用console.log(Mustache)的建议,并声称Mustache未定义,即使我正在导入它,如上所述。为什么会这样?

1 个答案:

答案 0 :(得分:0)

作为问题的解决方案,我最终下载并使用了Handlebars。在我看来,已经存在于项目中的Mustache库和我添加的新库中存在一些冲突。这并不能解释为什么Mustache将被定义,但这是我的解决方法。