小胡子不在nodejs服务器上渲染对象

时间:2014-12-05 04:44:51

标签: javascript json node.js mustache

我创建了一个简单的服务器(localhost:8080),使用Mustache打印文件夹中的相册名称,但它无效。

我的设置功能的方式是 1.我在终端上运行server.js(用nodejs编写) 2. localhost:8080 / pages / home在浏览器上导致server.js解析请求并在basic.html中调用 3. home.html中的basic.html调用

我的home.js是:

$(function()
{
var tmpl, // main template - html
tdata= {}; // json data object feeding the template

// Initialise page
function show()
{
    // Load html template
    $.get("/templates/home.html", function(d)
    {
        tmpl= d; 
    });

    //Retrieve server data, then initialize the page
    $.getJSON("/albums.json", function(d)
    {   
        $.extend(tdata, d.data); 
    });


    // After completion of AJAX calls, parse the template 
    // replacing mustache tags with vars
    $(document).ajaxStop(function()
    {
        var finald= mine(tdata);
        var rendp= Mustache.render(tmpl, finald);
        $("body").text(rendp);
    });

}
show();
});

function mine(data)
{   
    if(data.albums && data.albums.length> 0)
    data.have_albums= true;
    else
    data.have_albums= false;

    return data;
}

以上(home.js)在home.html中调用,即:

<div id="alblis">


{{#have_albums}}    
<p> Number of albums: {{albums.length}}
</p>
{{/have_albums}}

<ul id="albums">
    {{#albums}}
        <li class="album">
            <a href=
"http://localhost:8080/albums/{{album_name}}"> {{album_name}} 
            </a>
        </li>
    {{/albums}}

    {{^albums}}
        <li> Sorry, no albums </li>
    {{/albums}}
</ul>
</div>

因此,home.js的Mustache.render(..,..)部分显然存在问题

在浏览器中输入http://localhost:8080/pages/home后,在server.js运行的情况下,我在运行server.js的终端中获得以下内容

incoming req.: (GET) /pages/home
incoming req.: (GET) /content/jquery.js
incoming req.: (GET) /content/mustache.js
incoming req.: (GET) /content/home.js
incoming req.: (GET) /templates/home.html
incoming req.: (GET) /albums.json

旁注:终端上运行curl localhost:8080/albums.json的结果为
{"error":null,"data":{"albums":[{"album_name":"friends","title":"friends"},{"album_name":"travel","title":"travel"}]}}

我希望浏览器中的相册名称在运行时显示:http://localhost:8080/pages/home
但这种情况不会发生!!

1 个答案:

答案 0 :(得分:0)

我没有将文件目录放在系统o_O的正确位置!

我的函数(在home.js中)仍然无效 - 所以我把它的内容导入了main函数。